From c631489289145041c310a7a06caf498eeb49a5d2 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Wed, 26 Sep 2001 19:24:45 +0000 Subject: [PATCH] Prevent a NULL pointer from being pushed onto the stack. It's possible for PyErr_NormalizeException() to set the traceback pointer to NULL. I'm not sure how to provoke this directly from Python, although it may be possible. The error occurs when an exception is set using PyErr_SetObject() and another exception occurs while PyErr_NormalizeException() is creating the exception instance. XXX As a result of this change, it's possible for an exception to occur but sys.last_traceback to be left undefined. Not sure if this is a problem. --- Python/ceval.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Python/ceval.c b/Python/ceval.c index 5a8f503eb7..731e93fa83 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -2255,7 +2255,11 @@ eval_frame(PyFrameObject *f) set_exc_info(tstate, exc, val, tb); } - PUSH(tb); + if (tb == NULL) { + Py_INCREF(Py_None); + PUSH(Py_None); + } else + PUSH(tb); PUSH(val); PUSH(exc); } -- 2.40.0