Commit 5c86733c authored by Victor Stinner's avatar Victor Stinner

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

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