]> granicus.if.org Git - python/commitdiff
Issue #19437: Fix fill_and_set_sslerror() of _ssl, handle Py_BuildValue()
authorVictor Stinner <victor.stinner@gmail.com>
Thu, 31 Oct 2013 14:00:24 +0000 (15:00 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Thu, 31 Oct 2013 14:00:24 +0000 (15:00 +0100)
failure

Don't call PyObject_CallObject() with NULL parameters and an exception set.

Modules/_ssl.c

index 34a141bd271896bbef0e69184d9aaf570c6c95fe..ffcc4a9f61290205ca381d6e436fc3d37f56c1ad 100644 (file)
@@ -346,14 +346,18 @@ fill_and_set_sslerror(PyObject *type, int ssl_errno, const char *errstr,
                                    lib_obj, errstr, lineno);
     else
         msg = PyUnicode_FromFormat("%s (_ssl.c:%d)", errstr, lineno);
-
     if (msg == NULL)
         goto fail;
+
     init_value = Py_BuildValue("iN", ssl_errno, msg);
+    if (init_value == NULL)
+        goto fail;
+
     err_value = PyObject_CallObject(type, init_value);
     Py_DECREF(init_value);
     if (err_value == NULL)
         goto fail;
+
     if (reason_obj == NULL)
         reason_obj = Py_None;
     if (_PyObject_SetAttrId(err_value, &PyId_reason, reason_obj))