From 2fe4c27aa1789afe082571ed4596f95e36e7c0c3 Mon Sep 17 00:00:00 2001 From: "Paul F. Johnson" Date: Wed, 17 Sep 2008 21:05:44 +0000 Subject: [PATCH] Bump to 0.7 Patch file fixes and removal of unused ones --- .cvsignore | 2 +- import.log | 1 + ...sl097.patch => pyOpenSSL-0.7-openssl.patch | 9 +- pyOpenSSL-0.7-threadsafe.patch | 135 ++++++++++++++ pyOpenSSL-threadsafe.patch | 170 ------------------ pyOpenSSL.spec | 13 +- sources | 2 +- 7 files changed, 152 insertions(+), 180 deletions(-) create mode 100644 import.log rename pyOpenSSL-0.5.1-openssl097.patch => pyOpenSSL-0.7-openssl.patch (50%) create mode 100644 pyOpenSSL-0.7-threadsafe.patch diff --git a/.cvsignore b/.cvsignore index 7bcd846..cf174c8 100644 --- a/.cvsignore +++ b/.cvsignore @@ -1 +1 @@ -pyOpenSSL-0.6.tar.gz +pyOpenSSL-0.7.tar.gz diff --git a/import.log b/import.log new file mode 100644 index 0000000..49654f9 --- /dev/null +++ b/import.log @@ -0,0 +1 @@ +pyOpenSSL-0_7-1_fc10:HEAD:pyOpenSSL-0.7-1.fc10.src.rpm:1221685490 diff --git a/pyOpenSSL-0.5.1-openssl097.patch b/pyOpenSSL-0.7-openssl.patch similarity index 50% rename from pyOpenSSL-0.5.1-openssl097.patch rename to pyOpenSSL-0.7-openssl.patch index efbf6fc..e9b55b9 100644 --- a/pyOpenSSL-0.5.1-openssl097.patch +++ b/pyOpenSSL-0.7-openssl.patch @@ -1,13 +1,12 @@ ---- pyOpenSSL-0.5.1/setup.py.openssl097 2003-01-03 14:43:15.000000000 -0500 -+++ pyOpenSSL-0.5.1/setup.py 2003-01-03 14:43:08.000000000 -0500 -@@ -61,6 +61,10 @@ +--- pyOpenSSL-0.7/setup.py 2008-04-11 16:53:24.000000000 +0100 ++++ pyOpenSSL-0.7/setup-new.py 2008-09-15 23:46:19.000000000 +0100 +@@ -64,6 +64,9 @@ if sys.platform == 'darwin': IncludeDirs = ['/sw/include'] LibraryDirs = ['/sw/lib'] -+# Doesn't make use of pkgconfig easily, so fudge it +elif os.name == 'posix': + IncludeDirs = ['/usr/kerberos/include'] + LibraryDirs = ['/usr/kerberos/lib'] def mkExtension(name): - import string + modname = 'OpenSSL.' + name diff --git a/pyOpenSSL-0.7-threadsafe.patch b/pyOpenSSL-0.7-threadsafe.patch new file mode 100644 index 0000000..53ce1af --- /dev/null +++ b/pyOpenSSL-0.7-threadsafe.patch @@ -0,0 +1,135 @@ +--- pyOpenSSL-0.7/src/ssl/context.c 2008-03-21 22:34:42.000000000 +0000 ++++ pyOpenSSL-0.7/src/ssl/context-new.c 2008-09-15 23:58:23.000000000 +0100 +@@ -64,39 +64,34 @@ + static int + global_passphrase_callback(char *buf, int maxlen, int verify, void *arg) + { +- int len; ++ int len = 0; + char *str; + PyObject *argv, *ret = NULL; + ssl_ContextObj *ctx = (ssl_ContextObj *)arg; + ++ if (!ctx->tstate) ++ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); ++ MY_END_ALLOW_THREADS(ctx->tstate); ++ + /* The Python callback is called with a (maxlen,verify,userdata) tuple */ + argv = Py_BuildValue("(iiO)", maxlen, verify, ctx->passphrase_userdata); +- if (ctx->tstate != NULL) +- { +- /* We need to get back our thread state before calling the callback */ +- MY_END_ALLOW_THREADS(ctx->tstate); +- ret = PyEval_CallObject(ctx->passphrase_callback, argv); +- MY_BEGIN_ALLOW_THREADS(ctx->tstate); +- } +- else +- { +- ret = PyEval_CallObject(ctx->passphrase_callback, argv); +- } ++ ++ ret = PyEval_CallObject(ctx->passphrase_callback, argv); + Py_DECREF(argv); + + if (ret == NULL) +- return 0; ++ goto out; + + if (!PyObject_IsTrue(ret)) + { + Py_DECREF(ret); +- return 0; ++ goto out; + } + + if (!PyString_Check(ret)) + { + Py_DECREF(ret); +- return 0; ++ goto out; + } + + len = PyString_Size(ret); +@@ -107,6 +102,8 @@ + strncpy(buf, str, len); + Py_XDECREF(ret); + ++out: ++ MY_BEGIN_ALLOW_THREADS(ctx->tstate); + return len; + } + +@@ -126,7 +123,7 @@ + SSL *ssl; + ssl_ConnectionObj *conn; + crypto_X509Obj *cert; +- int errnum, errdepth, c_ret, use_thread_state; ++ int errnum, errdepth, c_ret = 0, use_thread_state; + + // Get Connection object to check thread state + ssl = (SSL *)X509_STORE_CTX_get_app_data(x509_ctx); +@@ -136,10 +133,15 @@ + if (use_thread_state) + MY_END_ALLOW_THREADS(conn->tstate); + +- cert = crypto_X509_New(X509_STORE_CTX_get_current_cert(x509_ctx), 0); + errnum = X509_STORE_CTX_get_error(x509_ctx); + errdepth = X509_STORE_CTX_get_error_depth(x509_ctx); + ++ if (!conn->tstate) ++ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); ++ MY_END_ALLOW_THREADS(conn->tstate); ++ ++ cert = crypto_X509_New(X509_STORE_CTX_get_current_cert(x509_ctx), 0); ++ + argv = Py_BuildValue("(OOiii)", (PyObject *)conn, (PyObject *)cert, + errnum, errdepth, ok); + Py_DECREF(cert); +@@ -173,28 +175,19 @@ + ssl_ConnectionObj *conn = (ssl_ConnectionObj *)SSL_get_app_data(ssl); + PyObject *argv, *ret; + ++ if (!conn->tstate) ++ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); ++ MY_END_ALLOW_THREADS(conn->tstate); ++ + argv = Py_BuildValue("(Oii)", (PyObject *)conn, where, _ret); +- if (conn->tstate != NULL) +- { +- /* We need to get back our thread state before calling the callback */ +- MY_END_ALLOW_THREADS(conn->tstate); +- ret = PyEval_CallObject(conn->context->info_callback, argv); +- if (ret == NULL) +- PyErr_Clear(); +- else +- Py_DECREF(ret); +- MY_BEGIN_ALLOW_THREADS(conn->tstate); +- } ++ ret = PyEval_CallObject(conn->context->info_callback, argv); ++ if (ret == NULL) ++ PyErr_Clear(); + else +- { +- ret = PyEval_CallObject(conn->context->info_callback, argv); +- if (ret == NULL) +- PyErr_Clear(); +- else +- Py_DECREF(ret); +- } ++ Py_DECREF(ret); + Py_DECREF(argv); + ++ MY_BEGIN_ALLOW_THREADS(conn->tstate); + return; + } + +@@ -447,6 +440,9 @@ + if (!PyArg_ParseTuple(args, "s|i:use_privatekey_file", &keyfile, &filetype)) + return NULL; + ++ if (self->tstate) ++ fprintf (stderr, "ERROR: ctx->tstate != NULL!\n"); ++ + MY_BEGIN_ALLOW_THREADS(self->tstate); + ret = SSL_CTX_use_PrivateKey_file(self->ctx, keyfile, filetype); + MY_END_ALLOW_THREADS(self->tstate); diff --git a/pyOpenSSL-threadsafe.patch b/pyOpenSSL-threadsafe.patch index 3ead011..98c3068 100644 --- a/pyOpenSSL-threadsafe.patch +++ b/pyOpenSSL-threadsafe.patch @@ -1,173 +1,3 @@ ---- pyOpenSSL-0.6/src/ssl/context.c.threadsafe 2004-08-06 06:24:38.000000000 -0400 -+++ pyOpenSSL-0.6/src/ssl/context.c 2005-07-12 22:30:02.000000000 -0400 -@@ -53,39 +53,33 @@ - static int - global_passphrase_callback(char *buf, int maxlen, int verify, void *arg) - { -- int len; -+ int len = 0; - char *str; - PyObject *argv, *ret = NULL; - ssl_ContextObj *ctx = (ssl_ContextObj *)arg; - -+ if (!ctx->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); -+ MY_END_ALLOW_THREADS(ctx->tstate); -+ - /* The Python callback is called with a (maxlen,verify,userdata) tuple */ - argv = Py_BuildValue("(iiO)", maxlen, verify, ctx->passphrase_userdata); -- if (ctx->tstate != NULL) -- { -- /* We need to get back our thread state before calling the callback */ -- MY_END_ALLOW_THREADS(ctx->tstate); -- ret = PyEval_CallObject(ctx->passphrase_callback, argv); -- MY_BEGIN_ALLOW_THREADS(ctx->tstate); -- } -- else -- { -- ret = PyEval_CallObject(ctx->passphrase_callback, argv); -- } -+ ret = PyEval_CallObject(ctx->passphrase_callback, argv); - Py_DECREF(argv); - - if (ret == NULL) -- return 0; -+ goto out; - - if (!PyObject_IsTrue(ret)) - { - Py_DECREF(ret); -- return 0; -+ goto out; - } - - if (!PyString_Check(ret)) - { - Py_DECREF(ret); -- return 0; -+ goto out; - } - - len = PyString_Size(ret); -@@ -96,6 +90,8 @@ - strncpy(buf, str, len); - Py_XDECREF(ret); - -+out: -+ MY_BEGIN_ALLOW_THREADS(ctx->tstate); - return len; - } - -@@ -115,43 +111,39 @@ - SSL *ssl; - ssl_ConnectionObj *conn; - crypto_X509Obj *cert; -- int errnum, errdepth, c_ret; -+ int errnum, errdepth, c_ret = 0; - -- cert = crypto_X509_New(X509_STORE_CTX_get_current_cert(x509_ctx), 0); - errnum = X509_STORE_CTX_get_error(x509_ctx); - errdepth = X509_STORE_CTX_get_error_depth(x509_ctx); - ssl = (SSL *)X509_STORE_CTX_get_app_data(x509_ctx); - conn = (ssl_ConnectionObj *)SSL_get_app_data(ssl); - -+ if (!conn->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); -+ MY_END_ALLOW_THREADS(conn->tstate); -+ -+ cert = crypto_X509_New(X509_STORE_CTX_get_current_cert(x509_ctx), 0); -+ - argv = Py_BuildValue("(OOiii)", (PyObject *)conn, (PyObject *)cert, - errnum, errdepth, ok); - Py_DECREF(cert); -- if (conn->tstate != NULL) -- { -- /* We need to get back our thread state before calling the callback */ -- MY_END_ALLOW_THREADS(conn->tstate); -- ret = PyEval_CallObject(conn->context->verify_callback, argv); -- MY_BEGIN_ALLOW_THREADS(conn->tstate); -- } -- else -- { -- ret = PyEval_CallObject(conn->context->verify_callback, argv); -- } -+ ret = PyEval_CallObject(conn->context->verify_callback, argv); - Py_DECREF(argv); - -- if (ret == NULL) -- return 0; -- -- if (PyObject_IsTrue(ret)) -+ if (ret != NULL) - { -- X509_STORE_CTX_set_error(x509_ctx, X509_V_OK); -- c_ret = 1; -- } -- else -- c_ret = 0; -+ if (PyObject_IsTrue(ret)) -+ { -+ X509_STORE_CTX_set_error(x509_ctx, X509_V_OK); -+ c_ret = 1; -+ } -+ else -+ c_ret = 0; - -- Py_DECREF(ret); -+ Py_DECREF(ret); -+ } - -+ MY_BEGIN_ALLOW_THREADS(conn->tstate); - return c_ret; - } - -@@ -169,28 +161,19 @@ - ssl_ConnectionObj *conn = (ssl_ConnectionObj *)SSL_get_app_data(ssl); - PyObject *argv, *ret; - -+ if (!conn->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate == NULL!\n"); -+ MY_END_ALLOW_THREADS(conn->tstate); -+ - argv = Py_BuildValue("(Oii)", (PyObject *)conn, where, _ret); -- if (conn->tstate != NULL) -- { -- /* We need to get back our thread state before calling the callback */ -- MY_END_ALLOW_THREADS(conn->tstate); -- ret = PyEval_CallObject(conn->context->info_callback, argv); -- if (ret == NULL) -- PyErr_Clear(); -- else -- Py_DECREF(ret); -- MY_BEGIN_ALLOW_THREADS(conn->tstate); -- } -+ ret = PyEval_CallObject(conn->context->info_callback, argv); -+ if (ret == NULL) -+ PyErr_Clear(); - else -- { -- ret = PyEval_CallObject(conn->context->info_callback, argv); -- if (ret == NULL) -- PyErr_Clear(); -- else -- Py_DECREF(ret); -- } -+ Py_DECREF(ret); - Py_DECREF(argv); - -+ MY_BEGIN_ALLOW_THREADS(conn->tstate); - return; - } - -@@ -393,6 +376,8 @@ - if (!PyArg_ParseTuple(args, "s|i:use_privatekey_file", &keyfile, &filetype)) - return NULL; - -+ if (self->tstate) -+ fprintf (stderr, "ERROR: ctx->tstate != NULL!\n"); - MY_BEGIN_ALLOW_THREADS(self->tstate); - ret = SSL_CTX_use_PrivateKey_file(self->ctx, keyfile, filetype); - MY_END_ALLOW_THREADS(self->tstate); --- pyOpenSSL-0.6/src/crypto/crypto.c.threadsafe 2004-08-09 10:56:05.000000000 -0400 +++ pyOpenSSL-0.6/src/crypto/crypto.c 2005-07-12 22:29:32.000000000 -0400 @@ -668,6 +668,74 @@ diff --git a/pyOpenSSL.spec b/pyOpenSSL.spec index 7dc55fb..83226a3 100644 --- a/pyOpenSSL.spec +++ b/pyOpenSSL.spec @@ -2,13 +2,14 @@ Summary: Python wrapper module around the OpenSSL library Name: pyOpenSSL -Version: 0.6 -Release: 4%{?dist} +Version: 0.7 +Release: 1%{?dist} Source0: http://pyopenssl.sf.net/%{name}-%{version}.tar.gz -Patch0: pyOpenSSL-0.5.1-openssl097.patch +Patch0: pyOpenSSL-0.7-openssl.patch Patch2: pyOpenSSL-elinks.patch Patch3: pyOpenSSL-nopdfout.patch Patch4: pyOpenSSL-threadsafe.patch +Patch5: pyOpenSSL-0.7-threadsafe.patch License: LGPLv2+ Group: Development/Libraries BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) @@ -30,6 +31,7 @@ High-level wrapper around a subset of the OpenSSL library, includes %patch2 -p1 -b .elinks %patch3 -p1 -b .nopdfout %patch4 -p1 -b .threadsafe +%patch5 -p1 -b .threadsafe # Fix permissions for debuginfo package %{__chmod} -x src/ssl/connection.c @@ -53,6 +55,11 @@ CFLAGS="%{optflags}" %{__python} setup.py build %{python_sitearch}/%{name}*.egg-info %changelog +* Mon Sep 15 2008 Paul F. Johnson 0.7-1 +- bump to new release +- the inevitable patch fixes + + * Wed Mar 26 2008 Tom "spot" Callaway - 0.6-4 - fix horrific release tag - fix license tag diff --git a/sources b/sources index c782e39..b9d6697 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -6200b71d3eb294a312d52c4825fc71c5 pyOpenSSL-0.6.tar.gz +1924edc58c1e99f27763971d9959ea15 pyOpenSSL-0.7.tar.gz