diff Python/pythonrun.c @ 20969:c1ecafd15560 legacy-trunk

PyOS_getsig(), PyOS_setsig(): The minimal amount of work to avoid the uninitialized memory reads reported in bug #478001. Note that this doesn't address the following larger issues: - Error conditions are not documented for PyOS_*sig() in the C API. - Nothing that actually calls PyOS_*sig() in the core interpreter and extension modules actually /checks/ the return value of the call. Fixing those is left as an exercise for a later day.
author Barry Warsaw <barry@python.org>
date Tue, 13 Nov 2001 23:08:26 +0000
parents b74610c92d8b
children 379fc66f4c96
line wrap: on
line diff
--- a/Python/pythonrun.c	Tue Nov 13 22:03:20 2001 +0000
+++ b/Python/pythonrun.c	Tue Nov 13 23:08:26 2001 +0000
@@ -1437,6 +1437,12 @@
 {
 #ifdef HAVE_SIGACTION
 	struct sigaction context;
+	/* Initialize context.sa_handler to SIG_ERR which makes about as
+	 * much sense as anything else.  It should get overwritten if
+	 * sigaction actually succeeds and otherwise we avoid an
+	 * uninitialized memory read.
+	 */
+	context.sa_handler = SIG_ERR;
 	sigaction(sig, NULL, &context);
 	return context.sa_handler;
 #else
@@ -1453,6 +1459,12 @@
 #ifdef HAVE_SIGACTION
 	struct sigaction context;
 	PyOS_sighandler_t oldhandler;
+	/* Initialize context.sa_handler to SIG_ERR which makes about as
+	 * much sense as anything else.  It should get overwritten if
+	 * sigaction actually succeeds and otherwise we avoid an
+	 * uninitialized memory read.
+	 */
+	context.sa_handler = SIG_ERR;
 	sigaction(sig, NULL, &context);
 	oldhandler = context.sa_handler;
 	context.sa_handler = handler;