Blame SOURCES/pyOpenSSL-0.13-check-error.patch

cce1a3
diff -up pyOpenSSL-0.13/OpenSSL/crypto/crypto.c.error pyOpenSSL-0.13/OpenSSL/crypto/crypto.c
cce1a3
--- pyOpenSSL-0.13/OpenSSL/crypto/crypto.c.error	2011-09-02 17:46:13.000000000 +0200
cce1a3
+++ pyOpenSSL-0.13/OpenSSL/crypto/crypto.c	2013-04-04 14:25:17.405118204 +0200
cce1a3
@@ -45,12 +45,15 @@ global_passphrase_callback(char *buf, in
cce1a3
 
cce1a3
     func = (PyObject *)cb_arg;
cce1a3
     argv = Py_BuildValue("(i)", rwflag);
cce1a3
+    if (argv == NULL)
cce1a3
+        return 0;
cce1a3
     ret = PyEval_CallObject(func, argv);
cce1a3
     Py_DECREF(argv);
cce1a3
     if (ret == NULL)
cce1a3
         return 0;
cce1a3
     if (!PyBytes_Check(ret))
cce1a3
     {
cce1a3
+        Py_DECREF(ret);
cce1a3
         PyErr_SetString(PyExc_ValueError, "String expected");
cce1a3
         return 0;
cce1a3
     }
cce1a3
@@ -58,6 +61,7 @@ global_passphrase_callback(char *buf, in
cce1a3
     if (nchars > len)
cce1a3
         nchars = len;
cce1a3
     strncpy(buf, PyBytes_AsString(ret), nchars);
cce1a3
+    Py_DECREF(ret);
cce1a3
     return nchars;
cce1a3
 }
cce1a3
 
cce1a3
@@ -637,7 +641,10 @@ crypto_sign(PyObject *spam, PyObject *ar
cce1a3
         return NULL;
cce1a3
     }
cce1a3
 
cce1a3
-    EVP_SignInit(&md_ctx, digest);
cce1a3
+    if (EVP_SignInit(&md_ctx, digest) <= 0) {
cce1a3
+        exception_from_error_queue(crypto_Error);
cce1a3
+        return NULL;
cce1a3
+    }
cce1a3
     EVP_SignUpdate(&md_ctx, data, data_len);
cce1a3
     sig_len = sizeof(sig_buf);
cce1a3
     err = EVP_SignFinal(&md_ctx, sig_buf, &sig_len, pkey->pkey);
cce1a3
@@ -692,7 +699,11 @@ crypto_verify(PyObject *spam, PyObject *
cce1a3
         return NULL;
cce1a3
     }
cce1a3
 
cce1a3
-    EVP_VerifyInit(&md_ctx, digest);
cce1a3
+    if (EVP_VerifyInit(&md_ctx, digest) <= 0) {
cce1a3
+        exception_from_error_queue(crypto_Error);
cce1a3
+        EVP_PKEY_free(pkey);
cce1a3
+        return NULL;
cce1a3
+    }
cce1a3
     EVP_VerifyUpdate(&md_ctx, data, data_len);
cce1a3
     err = EVP_VerifyFinal(&md_ctx, signature, sig_len, pkey);
cce1a3
     EVP_PKEY_free(pkey);
cce1a3
diff -up pyOpenSSL-0.13/OpenSSL/crypto/x509.c.error pyOpenSSL-0.13/OpenSSL/crypto/x509.c
cce1a3
--- pyOpenSSL-0.13/OpenSSL/crypto/x509.c.error	2011-09-02 17:46:13.000000000 +0200
cce1a3
+++ pyOpenSSL-0.13/OpenSSL/crypto/x509.c	2013-04-04 14:02:34.932847551 +0200
cce1a3
@@ -656,6 +656,7 @@ crypto_X509_digest(crypto_X509Obj *self,
cce1a3
     if (!X509_digest(self->x509,digest,fp,&len))
cce1a3
     {
cce1a3
         exception_from_error_queue(crypto_Error);
cce1a3
+        return NULL;
cce1a3
     }
cce1a3
     tmp = malloc(3*len+1);
cce1a3
     memset(tmp, 0, 3*len+1);
cce1a3
diff -up pyOpenSSL-0.13/OpenSSL/ssl/context.c.error pyOpenSSL-0.13/OpenSSL/ssl/context.c
cce1a3
--- pyOpenSSL-0.13/OpenSSL/ssl/context.c.error	2011-09-02 17:46:13.000000000 +0200
cce1a3
+++ pyOpenSSL-0.13/OpenSSL/ssl/context.c	2013-04-04 14:02:34.932847551 +0200
cce1a3
@@ -1215,6 +1215,10 @@ ssl_Context_init(ssl_ContextObj *self, i
cce1a3
     }
cce1a3
 
cce1a3
     self->ctx = SSL_CTX_new(method);
cce1a3
+    if (self->ctx == NULL) {
cce1a3
+        exception_from_error_queue(ssl_Error);
cce1a3
+        return NULL;
cce1a3
+    }
cce1a3
     Py_INCREF(Py_None);
cce1a3
     self->passphrase_callback = Py_None;
cce1a3
     Py_INCREF(Py_None);