diff options
Diffstat (limited to 'dev-lang/python/files/python-3.3-libressl.patch')
-rw-r--r-- | dev-lang/python/files/python-3.3-libressl.patch | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/dev-lang/python/files/python-3.3-libressl.patch b/dev-lang/python/files/python-3.3-libressl.patch new file mode 100644 index 0000000..816704e --- /dev/null +++ b/dev-lang/python/files/python-3.3-libressl.patch @@ -0,0 +1,127 @@ +From eed8d3b553e00e04c1f97c87ea02723630fb15a4 Mon Sep 17 00:00:00 2001 +From: hasufell <hasufell@gentoo.org> +Date: Sun, 20 Sep 2015 14:25:43 +0200 +Subject: [PATCH] Backport upstream libressl patches to python-3.3 + +https://hg.python.org/cpython/raw-rev/7f82f50fdad0 +https://hg.python.org/cpython/raw-rev/4dac45f88d45 +--- + Lib/ssl.py | 7 ++++++- + Lib/test/test_ssl.py | 21 +++++++++++++-------- + Modules/_ssl.c | 4 ++++ + configure | 42 ++++++++++++++++++++++++++++++++++++++++++ + configure.ac | 3 +++ + pyconfig.h.in | 3 +++ + 6 files changed, 71 insertions(+), 9 deletions(-) + +diff --git a/Lib/ssl.py b/Lib/ssl.py +index cd8d6b4..445ae87 100644 +--- a/Lib/ssl.py ++++ b/Lib/ssl.py +@@ -78,7 +78,12 @@ try: + from _ssl import OP_SINGLE_ECDH_USE + except ImportError: + pass +-from _ssl import RAND_status, RAND_egd, RAND_add, RAND_bytes, RAND_pseudo_bytes ++from _ssl import RAND_status, RAND_add, RAND_bytes, RAND_pseudo_bytes ++try: ++ from _ssl import RAND_egd ++except ImportError: ++ # LibreSSL does not provide RAND_egd ++ pass + from _ssl import ( + SSL_ERROR_ZERO_RETURN, + SSL_ERROR_WANT_READ, +diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py +index 9fc6027..879f791 100644 +--- a/Lib/test/test_ssl.py ++++ b/Lib/test/test_ssl.py +@@ -130,8 +130,9 @@ class BasicSocketTests(unittest.TestCase): + self.assertRaises(ValueError, ssl.RAND_bytes, -5) + self.assertRaises(ValueError, ssl.RAND_pseudo_bytes, -5) + +- self.assertRaises(TypeError, ssl.RAND_egd, 1) +- self.assertRaises(TypeError, ssl.RAND_egd, 'foo', 1) ++ if hasattr(ssl, 'RAND_egd'): ++ self.assertRaises(TypeError, ssl.RAND_egd, 1) ++ self.assertRaises(TypeError, ssl.RAND_egd, 'foo', 1) + ssl.RAND_add("this is a random string", 75.0) + + @unittest.skipUnless(os.name == 'posix', 'requires posix') +@@ -250,11 +251,11 @@ class BasicSocketTests(unittest.TestCase): + # Some sanity checks follow + # >= 0.9 + self.assertGreaterEqual(n, 0x900000) +- # < 2.0 +- self.assertLess(n, 0x20000000) ++ # < 3.0 ++ self.assertLess(n, 0x30000000) + major, minor, fix, patch, status = t + self.assertGreaterEqual(major, 0) +- self.assertLess(major, 2) ++ self.assertLess(major, 3) + self.assertGreaterEqual(minor, 0) + self.assertLess(minor, 256) + self.assertGreaterEqual(fix, 0) +@@ -263,9 +264,13 @@ class BasicSocketTests(unittest.TestCase): + self.assertLessEqual(patch, 26) + self.assertGreaterEqual(status, 0) + self.assertLessEqual(status, 15) +- # Version string as returned by OpenSSL, the format might change +- self.assertTrue(s.startswith("OpenSSL {:d}.{:d}.{:d}".format(major, minor, fix)), +- (s, t)) ++ # Version string as returned by {Open,Libre}SSL, the format might change ++ if "LibreSSL" in s: ++ self.assertTrue(s.startswith("LibreSSL {:d}.{:d}".format(major, minor)), ++ (s, t)) ++ else: ++ self.assertTrue(s.startswith("OpenSSL {:d}.{:d}.{:d}".format(major, minor, fix)), ++ (s, t)) + + @support.cpython_only + def test_refcycle(self): +diff --git a/Modules/_ssl.c b/Modules/_ssl.c +index 499e8ba..cb151ba 100644 +--- a/Modules/_ssl.c ++++ b/Modules/_ssl.c +@@ -2559,6 +2559,7 @@ Returns 1 if the OpenSSL PRNG has been seeded with enough data and 0 if not.\n\ + It is necessary to seed the PRNG with RAND_add() on some platforms before\n\ + using the ssl() function."); + ++#ifdef HAVE_RAND_EGD + static PyObject * + PySSL_RAND_egd(PyObject *self, PyObject *args) + { +@@ -2586,6 +2587,7 @@ PyDoc_STRVAR(PySSL_RAND_egd_doc, + Queries the entropy gather daemon (EGD) on the socket named by 'path'.\n\ + Returns number of bytes read. Raises SSLError if connection to EGD\n\ + fails or if it does not provide enough data to seed PRNG."); ++#endif /* HAVE_RAND_EGD */ + + #endif /* HAVE_OPENSSL_RAND */ + +@@ -2604,8 +2606,10 @@ static PyMethodDef PySSL_methods[] = { + PySSL_RAND_bytes_doc}, + {"RAND_pseudo_bytes", PySSL_RAND_pseudo_bytes, METH_VARARGS, + PySSL_RAND_pseudo_bytes_doc}, ++#ifdef HAVE_RAND_EGD + {"RAND_egd", PySSL_RAND_egd, METH_VARARGS, + PySSL_RAND_egd_doc}, ++#endif + {"RAND_status", (PyCFunction)PySSL_RAND_status, METH_NOARGS, + PySSL_RAND_status_doc}, + #endif +diff --git a/configure.ac b/configure.ac +index 6a64bff..90f315a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -2181,6 +2181,9 @@ AC_MSG_RESULT($SHLIBS) + AC_CHECK_LIB(sendfile, sendfile) + AC_CHECK_LIB(dl, dlopen) # Dynamic linking for SunOS/Solaris and SYSV + AC_CHECK_LIB(dld, shl_load) # Dynamic linking for HP-UX ++AC_CHECK_LIB(crypto, RAND_egd, ++ AC_DEFINE(HAVE_RAND_EGD, 1, ++ [Define if the libcrypto has RAND_egd])) + + # only check for sem_init if thread support is requested + if test "$with_threads" = "yes" -o -z "$with_threads"; then |