summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJesus Cea <jcea@jcea.es>2012-09-11 00:00:58 (GMT)
committerJesus Cea <jcea@jcea.es>2012-09-11 00:00:58 (GMT)
commitc8754a13e607ebc70f12a10297c76dc574a91d5b (patch)
tree55422157d1be2e8443251a5ed15bb7a7bd15ad18
parente8db356cf1084105a97db9457a2374209868005b (diff)
downloadcpython-c8754a13e607ebc70f12a10297c76dc574a91d5b.zip
cpython-c8754a13e607ebc70f12a10297c76dc574a91d5b.tar.gz
cpython-c8754a13e607ebc70f12a10297c76dc574a91d5b.tar.bz2
Closes #15793: Stack corruption in ssl.RAND_egd()
-rw-r--r--Lib/test/test_ssl.py8
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/_ssl.c2
3 files changed, 6 insertions, 7 deletions
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 551151e..d4c5e63 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -103,12 +103,8 @@ class BasicSocketTests(unittest.TestCase):
sys.stdout.write("\n RAND_status is %d (%s)\n"
% (v, (v and "sufficient randomness") or
"insufficient randomness"))
- try:
- ssl.RAND_egd(1)
- except TypeError:
- pass
- else:
- print("didn't raise TypeError")
+ 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)
def test_parse_cert(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index 725fb9e..3b09e96 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -154,6 +154,9 @@ Library
- Issue #13579: string.Formatter now understands the 'a' conversion specifier.
+- Issue #15793: Stack corruption in ssl.RAND_egd().
+ Patch by Serhiy Storchaka.
+
- Issue #15595: Fix subprocess.Popen(universal_newlines=True)
for certain locales (utf-16 and utf-32 family). Patch by Chris Jerdonek.
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 0a84118..e9de8ca 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -1917,7 +1917,7 @@ PySSL_RAND_egd(PyObject *self, PyObject *args)
PyObject *path;
int bytes;
- if (!PyArg_ParseTuple(args, "O&|i:RAND_egd",
+ if (!PyArg_ParseTuple(args, "O&:RAND_egd",
PyUnicode_FSConverter, &path))
return NULL;