Re: Fwd: report 1/3: buffer under-read in rfc2047.c lwslen()

Alejandro Colomar via Mutt-dev <[email protected]> Sat, 20 Jun 2026 22:48:38 +0200
Newsgroups gmane.mail.mutt.devel
Message-ID <ajb8E08SKtRDczYb@devuan>
Hi Vincent,

On 2026-06-20T19:39:29+0200, Vincent Lefevre wrote:
> On 2026-06-18 11:28:00 +0800, Kevin J. McCarthy wrote:
> > In this case, I think the proposed patch is the best solution:
> > 
> > diff --git a/rfc2047.c b/rfc2047.c
> > index d72ae997..2bdd8553 100644
> > --- a/rfc2047.c
> > +++ b/rfc2047.c
> > @@ -815,7 +815,7 @@ static size_t lwslen(const char *s, size_t n)
> >        len = (size_t)(p - s);
> >        break;
> >      }
> > -  if (strchr("\r\n", *(p-1))) /* LWS doesn't end with CRLF */
> > +  if (len > 0 && strchr("\r\n", *(p-1))) /* LWS doesn't end with CRLF */
> >      len = (size_t)0;
> >    return len;
> >  }
> 
> "len = (size_t)0;" has a cast, but "len > 0" doesn't.
> This doesn't matter much, but this is not consistent.

Comparison with a literal should not use casts.  The few false-positive
diagnostics that can happen are compiler bugs.

See <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119011>.

Let's not add more superfluous casts (but we don't need to remove the
existing ones).


Have a lovely night!
Alex

-- 
<https://www.alejandro-colomar.es>
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCgAdFiEES7Jt9u9GbmlWADAi64mZXMKQwqkFAmo2/J8ACgkQ64mZXMKQ
wqkfaw//VkmF4x2h/qA+/lF61onNPdP0/9BJjxfMyzO4AiDVws1u9Hg7zpZjDToi
B5rnDT94fhQnTYIUjDjTtUqpYEdWL8MjgnswfhUANDdFRhbYIQJ+UgxmY2mF0mGu
PHoSYMLGtiCY3cXFyacH0jwvPbBue+2aKyvprNB5celQf7w40bd5Avn2cWJnt9pi
FH8mrVvsoaiaA6E4jjypixXPk8NNAyOy/gh+MI/6vtdW61cVPZtjDWfcdCbPchAN
p/eVyRE1heyevAQ59NhzOZoU7bSX8KgM4PYOqYTfE23KvwTTKVKL3jKEdKT5F4l8
C1bcG7Jh2gtm4EJISE4H66ynKmqmXhbMP7ArZXVVqWUkXx6tV2I5BGj0ONXFlsgD
T2i8wfSDz98FjCosviY9WK13VnYwY38pSRBn+23bK+rA9FMjh7Qm7OvALGFn161x
gRUpbdvQD36ozV4XYofmxBRxd42WMvZKsyJrSFy1LjFaVycUb7tSuKGo4BD1LaxW
m4GzxUsnW5Y4IP2rloHfxDiOAxzPn9NDBO/2EuXhChAyvbqyfvmlJqg7sstfUMrQ
gTiCNjo2psQ4e9ZjQX/K9pPJ1xyYPxgGgdfdawg9N/NSq6n+RVLe3AmzBwgKUzjN
T0kEmkpEsb5fcaQJlzKEfPehJg02tSjX/xBlTWKff1FMoYdZ+sA=
=y8Sj
-----END PGP SIGNATURE-----