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.
This commit is contained in:
parent
8eded195aa
commit
4c7fdfc35b
|
@ -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 {
|
||||
|
|
Loading…
Reference in New Issue