changeset: 88270:0cca6c5513d2 user: Victor Stinner date: Fri Jan 03 12:26:12 2014 +0100 files: Modules/zlibmodule.c description: Issue #18294: Fix uint_converter() in zlibmodule.c, fix the "> UINT_MAX" check diff -r 7dbb4c6cd30e -r 0cca6c5513d2 Modules/zlibmodule.c --- a/Modules/zlibmodule.c Thu Jan 02 22:25:00 2014 -0700 +++ b/Modules/zlibmodule.c Fri Jan 03 12:26:12 2014 +0100 @@ -329,11 +329,6 @@ 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 @@ 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; }