[Python-checkins] cpython: Issue #18408: Fix parser.sequence2st() and parser.tuple2st(): raise MemoryError
victor.stinner
python-checkins at python.org
Fri Jul 12 01:42:53 CEST 2013
http://hg.python.org/cpython/rev/89c6495d1ff2
changeset: 84578:89c6495d1ff2
user: Victor Stinner <victor.stinner at gmail.com>
date: Fri Jul 12 01:33:59 2013 +0200
summary:
Issue #18408: Fix parser.sequence2st() and parser.tuple2st(): raise MemoryError
on memory allocation failure
Instead of ignoring the memory allocation failure and create invalid objects.
files:
Modules/parsermodule.c | 19 +++++++++++++++----
1 files changed, 15 insertions(+), 4 deletions(-)
diff --git a/Modules/parsermodule.c b/Modules/parsermodule.c
--- a/Modules/parsermodule.c
+++ b/Modules/parsermodule.c
@@ -809,8 +809,13 @@
return 0;
}
strn = (char *)PyObject_MALLOC(len + 1);
- if (strn != NULL)
- (void) memcpy(strn, temp_str, len + 1);
+ if (strn == NULL) {
+ Py_DECREF(temp);
+ Py_XDECREF(elem);
+ PyErr_NoMemory();
+ return 0;
+ }
+ (void) memcpy(strn, temp_str, len + 1);
Py_DECREF(temp);
}
else if (!ISNONTERMINAL(type)) {
@@ -906,8 +911,14 @@
return NULL;
}
res->n_str = (char *)PyObject_MALLOC(len + 1);
- if (res->n_str != NULL && temp != NULL)
- (void) memcpy(res->n_str, temp, len + 1);
+ if (res->n_str == NULL) {
+ Py_DECREF(res);
+ Py_DECREF(encoding);
+ Py_DECREF(tuple);
+ PyErr_NoMemory();
+ return NULL;
+ }
+ (void) memcpy(res->n_str, temp, len + 1);
Py_DECREF(encoding);
Py_DECREF(tuple);
}
--
Repository URL: http://hg.python.org/cpython
More information about the Python-checkins
mailing list