bpo-36367: Free buffer if realloc fails in tokenize.c (GH-12442)
This commit is contained in:
parent
dcf617152e
commit
cb90c89de1
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue