From: Guido van Rossum Date: Tue, 28 Apr 1998 16:06:54 +0000 (+0000) Subject: If USE_STACKCHECK is defined use PyOS_CheckStack() in the repr and str X-Git-Tag: v1.5.2a1~792 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9b00dfae752aa8f1e4c6d70469e50ec45fb057c3;p=python If USE_STACKCHECK is defined use PyOS_CheckStack() in the repr and str routines. This catches a slightly different set of crashes than the recursive-repr fix. (Jack) --- diff --git a/Objects/object.c b/Objects/object.c index 3289aba494..0588fea506 100644 --- a/Objects/object.c +++ b/Objects/object.c @@ -162,6 +162,12 @@ PyObject_Print(op, fp, flags) int ret = 0; if (PyErr_CheckSignals()) return -1; +#ifdef USE_STACKCHECK + if (PyOS_CheckStack()) { + PyErr_SetString(PyExc_MemoryError, "Stack overflow"); + return -1; + } +#endif if (op == NULL) { fprintf(fp, ""); } @@ -213,6 +219,12 @@ PyObject_Repr(v) { if (PyErr_CheckSignals()) return NULL; +#ifdef USE_STACKCHECK + if (PyOS_CheckStack()) { + PyErr_SetString(PyExc_MemoryError, "Stack overflow"); + return NULL; + } +#endif if (v == NULL) return PyString_FromString(""); else if (v->ob_type->tp_repr == NULL) {