Mercurial > cpython-lru_cache-weakref
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;
