[Python-checkins] CVS: python/dist/src/Objects longobject.c,1.57,1.58

Fred L. Drake python-dev@python.org
Thu, 1 Jun 2000 11:37:38 -0700


Update of /cvsroot/python/python/dist/src/Objects
In directory slayer.i.sourceforge.net:/tmp/cvs-serv3484

Modified Files:
	longobject.c 
Log Message:

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.


Index: longobject.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Objects/longobject.c,v
retrieving revision 1.57
retrieving revision 1.58
diff -C2 -r1.57 -r1.58
*** longobject.c	2000/05/03 23:44:35	1.57
--- longobject.c	2000/06/01 18:37:36	1.58
***************
*** 356,363 ****
  	return PyLong_FromLong( (long)ival );
  #else
! 	if( ival <= (LONG_LONG)LONG_MAX ) {
  		return PyLong_FromLong( (long)ival );
  	}
! 	else if( ival <= (unsigned LONG_LONG)ULONG_MAX ) {
  		return PyLong_FromUnsignedLong( (unsigned long)ival );
  	}
--- 356,363 ----
  	return PyLong_FromLong( (long)ival );
  #else
! 	if ((LONG_LONG)LONG_MIN <= ival && ival <= (LONG_LONG)LONG_MAX) {
  		return PyLong_FromLong( (long)ival );
  	}
! 	else if (0 <= ival && ival <= (unsigned LONG_LONG)ULONG_MAX) {
  		return PyLong_FromUnsignedLong( (unsigned long)ival );
  	}