From 5c86733c8ab0817d3aea569592a0d6bfbee81e9c Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 3 Jan 2014 12:26:12 +0100 Subject: [PATCH] Issue #18294: Fix uint_converter() in zlibmodule.c, fix the "> UINT_MAX" check --- Modules/zlibmodule.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/Modules/zlibmodule.c b/Modules/zlibmodule.c index bf8c8e4d12..28ed3cdca4 100644 --- a/Modules/zlibmodule.c +++ b/Modules/zlibmodule.c @@ -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; } -- 2.40.0