On Tuesday 19 December 2006 11:37, Paolo Bonzini wrote:
>
> > By the way, as I've tried to describe here:
> > <http://cert.uni-stuttgart.de/advisories/c-integer-overflow.php>
> > variable range tracking can result in reintroduction of
> > supposedly-fixed security vulnerabilities. 8-(
>
> Interesting read. I agree with the proposed fix; however, note that GCC
> does not make the result of overflowing signed left-shifts undefined,
> exactly because in this case the overflow is relied upon by too many
> existing programs (and also because left shifts are inherently a bitwise
> operation, with well defined overflowing behavior on the most
> significant bits).
I wrote this just a few days ago:
do {
int32_t v1 = v << 1;
if (v < 0) v1 ^= mask;
v = v1;
printf("%10u: %08x\n", c++, v);
} while (v != 1);
I would become rather sad if this will stop compiling correctly.
--
vda