MERGE: Closes #15793: Stack corruption in ssl.RAND_egd()
diff --git a/Lib/test/test_ssl.py b/Lib/test/test_ssl.py
index 51762cf..4ce98b6 100644
--- a/Lib/test/test_ssl.py
+++ b/Lib/test/test_ssl.py
@@ -125,12 +125,8 @@
else:
self.assertRaises(ssl.SSLError, ssl.RAND_bytes, 16)
- 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 de603c4..d1aeaec 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -210,6 +210,9 @@
- 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 1104a4e..456b1f1 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -2481,7 +2481,7 @@
PyObject *path;
int bytes;
- if (!PyArg_ParseTuple(args, "O&|i:RAND_egd",
+ if (!PyArg_ParseTuple(args, "O&:RAND_egd",
PyUnicode_FSConverter, &path))
return NULL;