Issue #18294: Fix uint_converter() in zlibmodule.c, fix the "> UINT_MAX" check

This commit is contained in:
Victor Stinner 2014-01-03 12:26:12 +01:00
parent fbc785188d
commit 5c86733c8a
1 changed files with 6 additions and 5 deletions

View File

@ -329,11 +329,6 @@ uint_converter(PyObject *obj, void *ptr)
uval = PyLong_AsUnsignedLong(obj);
if (uval == (unsigned long)-1 && PyErr_Occurred())
return 0;
if (uval > UINT_MAX) {
PyErr_SetString(PyExc_OverflowError,
"Python int too large for C unsigned int");
return 0;
}
}
else {
if (val < 0) {
@ -344,6 +339,12 @@ uint_converter(PyObject *obj, void *ptr)
uval = (unsigned long)val;
}
if (uval > UINT_MAX) {
PyErr_SetString(PyExc_OverflowError,
"Python int too large for C unsigned int");
return 0;
}
*(unsigned int *)ptr = Py_SAFE_DOWNCAST(uval, unsigned long, unsigned int);
return 1;
}