Commit 4c7fdfc3 authored by Fred Drake's avatar Fred Drake

Trent Mick <trentm@ActiveState.com>:

This patch correct bounds checking in PyLong_FromLongLong. Currently, it does
not check properly for negative values when checking to see if the incoming
value fits in a long or unsigned long. This results in possible silent
truncation of the value for very large negative values.
parent 8eded195
......@@ -355,10 +355,10 @@ PyLong_FromLongLong(ival)
/* In case the compiler is faking it. */
return PyLong_FromLong( (long)ival );
#else
if( ival <= (LONG_LONG)LONG_MAX ) {
if ((LONG_LONG)LONG_MIN <= ival && ival <= (LONG_LONG)LONG_MAX) {
return PyLong_FromLong( (long)ival );
}
else if( ival <= (unsigned LONG_LONG)ULONG_MAX ) {
else if (0 <= ival && ival <= (unsigned LONG_LONG)ULONG_MAX) {
return PyLong_FromUnsignedLong( (unsigned long)ival );
}
else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment