diff options
| author | Neal Norwitz <nnorwitz@gmail.com> | 2006-07-17 00:59:04 +0000 |
|---|---|---|
| committer | Neal Norwitz <nnorwitz@gmail.com> | 2006-07-17 00:59:04 +0000 |
| commit | 5865e421f883d06608e5635bb61bf466c9dd6634 (patch) | |
| tree | a240b225a094706a3dd01364c9630d8c6fa78b4a /Python/pythonrun.c | |
| parent | 1f2cc3388d43f05a9b3960b30f4dea16cd20484b (diff) | |
| download | cpython-5865e421f883d06608e5635bb61bf466c9dd6634.tar.gz | |
Reported by Klocwork #151.
v2 can be NULL if exception2 is NULL. I don't think that condition can happen,
but I'm not sure it can't either. Now the code will protect against either
being NULL.
Diffstat (limited to 'Python/pythonrun.c')
| -rw-r--r-- | Python/pythonrun.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/Python/pythonrun.c b/Python/pythonrun.c index 7e5c696a2c..95a337269b 100644 --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -1064,6 +1064,17 @@ PyErr_PrintEx(int set_sys_last_vars) } PyErr_Fetch(&exception2, &v2, &tb2); PyErr_NormalizeException(&exception2, &v2, &tb2); + /* It should not be possible for exception2 or v2 + to be NULL. However PyErr_Display() can't + tolerate NULLs, so just be safe. */ + if (exception2 == NULL) { + exception2 = Py_None; + Py_INCREF(exception2); + } + if (v2 == NULL) { + v2 = Py_None; + Py_INCREF(v2); + } if (Py_FlushLine()) PyErr_Clear(); fflush(stdout); @@ -1071,8 +1082,8 @@ PyErr_PrintEx(int set_sys_last_vars) PyErr_Display(exception2, v2, tb2); PySys_WriteStderr("\nOriginal exception was:\n"); PyErr_Display(exception, v, tb); - Py_XDECREF(exception2); - Py_XDECREF(v2); + Py_DECREF(exception2); + Py_DECREF(v2); Py_XDECREF(tb2); } Py_XDECREF(result); |
