On Thu, 30 Sep 2021 12:33:58 +0100, Stuart Henderson wrote:

> ----------------------------
> revision 1.628
> date: 2013/11/25 12:52:45;  author: benno;  state: Exp;  lines: +7 -7;
> use u_char for buffers in yylex, for ctype calls
> found by millert@, ok deraadt@
> ----------------------------

Thanks, I had forgotten about that.  The issue is that if we have
a char > 127, when that gets assigned to an int it will end up with
the wrong value.  Making the buffer unsigned was the least invasive
fix, though perhaps not the best one.

I think adding a cast for things like:

        lungetc(*p);
        ...
        c = *--p;

would actually make the intent clearer.  E.g.

        lungetc((u_char)*p);
        ...
        c = (u_char)*--p;

Since we use casts sparingly, when they are present they indicate
something you need to pay attention to.  That is not the case when
we simply change the type.

 - todd

Reply via email to