[Python-checkins] CVS: python/dist/src/Python pythonrun.c,2.149,2.150
Barry Warsaw
bwarsaw@users.sourceforge.net
Tue, 13 Nov 2001 15:08:28 -0800
Update of /cvsroot/python/python/dist/src/Python
In directory usw-pr-cvs1:/tmp/cvs-serv31738
Modified Files:
pythonrun.c
Log Message:
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.
Index: pythonrun.c
===================================================================
RCS file: /cvsroot/python/python/dist/src/Python/pythonrun.c,v
retrieving revision 2.149
retrieving revision 2.150
diff -C2 -d -r2.149 -r2.150
*** pythonrun.c 2001/10/12 22:14:26 2.149
--- pythonrun.c 2001/11/13 23:08:26 2.150
***************
*** 1438,1441 ****
--- 1438,1447 ----
#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;
***************
*** 1454,1457 ****
--- 1460,1469 ----
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;