[Python-checkins] bpo-36367: Free buffer if realloc fails in tokenize.c (GH-12442)
Pablo Galindo
webhook-mailer at python.org
Tue Mar 19 13:18:07 EDT 2019
https://github.com/python/cpython/commit/cb90c89de14aab636739b3e810cf949e47b54a0c
commit: cb90c89de14aab636739b3e810cf949e47b54a0c
branch: master
author: Pablo Galindo <Pablogsal at gmail.com>
committer: GitHub <noreply at github.com>
date: 2019-03-19T17:17:58Z
summary:
bpo-36367: Free buffer if realloc fails in tokenize.c (GH-12442)
files:
M Parser/tokenizer.c
diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c
index 8f0a9c810053..ad054975689e 100644
--- a/Parser/tokenizer.c
+++ b/Parser/tokenizer.c
@@ -649,9 +649,14 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
}
*current = '\0';
final_length = current - buf + 1;
- if (final_length < needed_length && final_length)
+ if (final_length < needed_length && final_length) {
/* should never fail */
- buf = PyMem_REALLOC(buf, final_length);
+ char* result = PyMem_REALLOC(buf, final_length);
+ if (result == NULL) {
+ PyMem_FREE(buf);
+ }
+ buf = result;
+ }
return buf;
}
@@ -958,6 +963,7 @@ tok_nextc(struct tok_state *tok)
newbuf = (char *)PyMem_REALLOC(newbuf,
newsize);
if (newbuf == NULL) {
+ PyMem_FREE(tok->buf);
tok->done = E_NOMEM;
tok->cur = tok->inp;
return EOF;
More information about the Python-checkins
mailing list