[Python-checkins] [2.7] bpo-30057: Fix potential missed signal in signal.signal(). (GH-4258) (#4263)
Antoine Pitrou
webhook-mailer at python.org
Fri Nov 3 15:36:42 EDT 2017
https://github.com/python/cpython/commit/c713837e91f39dc18740c74729cb7cebcf54fe6e
commit: c713837e91f39dc18740c74729cb7cebcf54fe6e
branch: 2.7
author: Antoine Pitrou <pitrou at free.fr>
committer: GitHub <noreply at github.com>
date: 2017-11-03T20:36:39+01:00
summary:
[2.7] bpo-30057: Fix potential missed signal in signal.signal(). (GH-4258) (#4263)
Bug report and patch by Jeroen Demeyer..
(cherry picked from commit f6f90ff079a22b79a58d47b6117cc8a8c7d366f3)
files:
A Misc/NEWS.d/next/Library/2017-11-03-19-11-43.bpo-30057.NCaijI.rst
M Misc/ACKS
M Modules/signalmodule.c
diff --git a/Misc/ACKS b/Misc/ACKS
index e076c32b14d..dc64293b696 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -324,6 +324,7 @@ Vincent Delft
Arnaud Delobelle
Konrad Delong
Erik Demaine
+Jeroen Demeyer
Martin Dengler
John Dennis
L. Peter Deutsch
diff --git a/Misc/NEWS.d/next/Library/2017-11-03-19-11-43.bpo-30057.NCaijI.rst b/Misc/NEWS.d/next/Library/2017-11-03-19-11-43.bpo-30057.NCaijI.rst
new file mode 100644
index 00000000000..5740eb2500f
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2017-11-03-19-11-43.bpo-30057.NCaijI.rst
@@ -0,0 +1 @@
+Fix potential missed signal in signal.signal().
diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c
index c7bf1f08534..ef70d10bb18 100644
--- a/Modules/signalmodule.c
+++ b/Modules/signalmodule.c
@@ -317,12 +317,15 @@ signal_signal(PyObject *self, PyObject *args)
}
else
func = signal_handler;
+ /* Check for pending signals before changing signal handler */
+ if (PyErr_CheckSignals()) {
+ return NULL;
+ }
if (PyOS_setsig(sig_num, func) == SIG_ERR) {
PyErr_SetFromErrno(PyExc_RuntimeError);
return NULL;
}
old_handler = Handlers[sig_num].func;
- Handlers[sig_num].tripped = 0;
Py_INCREF(obj);
Handlers[sig_num].func = obj;
if (old_handler != NULL)
More information about the Python-checkins
mailing list