[Python-checkins] CVS: python/dist/src/Python getargs.c,2.31,2.32
Guido van Rossum
python-dev@python.org
Mon, 8 May 2000 10:02:44 -0400 (EDT)
- Previous message: [Python-checkins] CVS: python/dist/src acconfig.h,1.28,1.29 config.h.in,2.53,2.54 configure,1.111,1.112 configure.in,1.119,1.120
- Next message: [Python-checkins] CVS: python/dist/src/Include ceval.h,2.30,2.31
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /projects/cvsroot/python/dist/src/Python
In directory eric:/projects/python/develop/guido/src/Python
Modified Files:
getargs.c
Log Message:
Trent Mick:
Changes the 'b', 'h', and 'i' formatters in PyArg_ParseTuple to raise an
Overflow exception if they overflow (previously they just silently
overflowed).
Changes by Guido: always accept values [0..255] (in addition to
[CHAR_MIN..CHAR_MAX]) for 'b' format; changed some spaces into tabs in
other code.
Index: getargs.c
===================================================================
RCS file: /projects/cvsroot/python/dist/src/Python/getargs.c,v
retrieving revision 2.31
retrieving revision 2.32
diff -C2 -r2.31 -r2.32
*** getargs.c 2000/05/03 15:15:57 2.31
--- getargs.c 2000/05/08 14:02:41 2.32
***************
*** 472,475 ****
--- 472,485 ----
if (ival == -1 && PyErr_Occurred())
return "integer<b>";
+ else if (ival < CHAR_MIN) {
+ PyErr_SetString(PyExc_OverflowError,
+ "byte integer is less than minimum");
+ return "integer<b>";
+ }
+ else if (ival > CHAR_MAX && ival >= 256) {
+ PyErr_SetString(PyExc_OverflowError,
+ "byte integer is greater than maximum");
+ return "integer<b>";
+ }
else
*p = (char) ival;
***************
*** 483,486 ****
--- 493,506 ----
if (ival == -1 && PyErr_Occurred())
return "integer<h>";
+ else if (ival < SHRT_MIN) {
+ PyErr_SetString(PyExc_OverflowError,
+ "short integer is less than minimum");
+ return "integer<h>";
+ }
+ else if (ival > SHRT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "short integer is greater than maximum");
+ return "integer<h>";
+ }
else
*p = (short) ival;
***************
*** 494,497 ****
--- 514,527 ----
if (ival == -1 && PyErr_Occurred())
return "integer<i>";
+ else if (ival < INT_MIN) {
+ PyErr_SetString(PyExc_OverflowError,
+ "integer is less than minimum");
+ return "integer<i>";
+ }
+ else if (ival > INT_MAX) {
+ PyErr_SetString(PyExc_OverflowError,
+ "integer is greater than maximum");
+ return "integer<i>";
+ }
else
*p = ival;
***************
*** 573,578 ****
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
--- 603,608 ----
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
***************
*** 590,596 ****
format++;
} else {
! char **p = va_arg(*p_va, char **);
! if (PyString_Check(arg))
*p = PyString_AS_STRING(arg);
else if (PyUnicode_Check(arg)) {
--- 620,626 ----
format++;
} else {
! char **p = va_arg(*p_va, char **);
! if (PyString_Check(arg))
*p = PyString_AS_STRING(arg);
else if (PyUnicode_Check(arg)) {
***************
*** 611,616 ****
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
--- 641,646 ----
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
***************
*** 633,639 ****
format++;
} else {
! char **p = va_arg(*p_va, char **);
! if (arg == Py_None)
*p = 0;
else if (PyString_Check(arg))
--- 663,669 ----
format++;
} else {
! char **p = va_arg(*p_va, char **);
! if (arg == Py_None)
*p = 0;
else if (PyString_Check(arg))
***************
*** 781,786 ****
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
--- 811,816 ----
{
if (*format == '#') { /* any buffer-like object */
! void **p = (void **)va_arg(*p_va, char **);
! PyBufferProcs *pb = arg->ob_type->tp_as_buffer;
int *q = va_arg(*p_va, int *);
int count;
***************
*** 800,806 ****
format++;
} else {
! Py_UNICODE **p = va_arg(*p_va, Py_UNICODE **);
! if (PyUnicode_Check(arg))
*p = PyUnicode_AS_UNICODE(arg);
else
--- 830,836 ----
format++;
} else {
! Py_UNICODE **p = va_arg(*p_va, Py_UNICODE **);
! if (PyUnicode_Check(arg))
*p = PyUnicode_AS_UNICODE(arg);
else
***************
*** 851,855 ****
*p = arg;
else
! return "(unspecified)";
}
--- 881,885 ----
*p = arg;
else
! return "(unspecified)";
}
***************
*** 1162,1166 ****
if (!match) {
sprintf(msgbuf,
! "%s is an invalid keyword argument for this function",
ks);
PyErr_SetString(PyExc_TypeError, msgbuf);
--- 1192,1196 ----
if (!match) {
sprintf(msgbuf,
! "%s is an invalid keyword argument for this function",
ks);
PyErr_SetString(PyExc_TypeError, msgbuf);
- Previous message: [Python-checkins] CVS: python/dist/src acconfig.h,1.28,1.29 config.h.in,2.53,2.54 configure,1.111,1.112 configure.in,1.119,1.120
- Next message: [Python-checkins] CVS: python/dist/src/Include ceval.h,2.30,2.31
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]