signed char bug in regexp library

Tim Kientzle kientzle at acm.org
Tue Feb 17 10:11:12 PST 2004


Mikulas Patocka wrote:
> Hi
> 
> I ripped regexp library from FreeBSD 4 and use it in another program. I
> get random crashes because the library casts char to int and uses it as
> array index ... the most obvious case is engine.i:189:
> register char *dp;
> dp += charjump[(int)*dp];
> but there are many more and I'm unable to spot them all.
> 
> When i compile library with -funsigned-char, it works fine. But it isn't
> compiled with that flag in FreeBSD.

Mikulas,

Could you verify that programs in FreeBSD 4
crash because of this?  That would provide
incentive to get it fixed.

One easy fix, by the way, is:

     dp += charjump[(int)(unsigned char)*dp];

For what it's worth, the code probably isn't assuming
unsigned characters; it's probably assuming ASCII.  ;-)

Tim Kientzle



More information about the freebsd-hackers mailing list