From 9b09ba1234f8ba7a01eaf8986147ae0758712089 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Wed, 2 Apr 2014 12:15:06 -0400 Subject: bail in unicode error's __str__ methods if the objects are not properly initialized (closes #21134) --- Objects/exceptions.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'Objects/exceptions.c') diff --git a/Objects/exceptions.c b/Objects/exceptions.c index 44e60dd044..861dbc7d0a 100644 --- a/Objects/exceptions.c +++ b/Objects/exceptions.c @@ -1837,6 +1837,10 @@ UnicodeEncodeError_str(PyObject *self) PyObject *reason_str = NULL; PyObject *encoding_str = NULL; + if (!uself->object) + /* Not properly initialized. */ + return PyUnicode_FromString(""); + /* Get reason and encoding as strings, which they might not be if they've been modified after we were contructed. */ reason_str = PyObject_Str(uself->reason); @@ -1955,6 +1959,10 @@ UnicodeDecodeError_str(PyObject *self) PyObject *reason_str = NULL; PyObject *encoding_str = NULL; + if (!uself->object) + /* Not properly initialized. */ + return PyUnicode_FromString(""); + /* Get reason and encoding as strings, which they might not be if they've been modified after we were contructed. */ reason_str = PyObject_Str(uself->reason); @@ -2049,6 +2057,10 @@ UnicodeTranslateError_str(PyObject *self) PyObject *result = NULL; PyObject *reason_str = NULL; + if (!uself->object) + /* Not properly initialized. */ + return PyUnicode_FromString(""); + /* Get reason as a string, which it might not be if it's been modified after we were contructed. */ reason_str = PyObject_Str(uself->reason); -- cgit v1.2.1