mirror of
https://github.com/python/cpython.git
synced 2025-08-24 10:45:53 +00:00
bpo-36367: Free buffer if realloc fails in tokenize.c (GH-12442)
This commit is contained in:
parent
dcf617152e
commit
cb90c89de1
1 changed files with 8 additions and 2 deletions
|
@ -649,9 +649,14 @@ translate_newlines(const char *s, int exec_input, struct tok_state *tok) {
|
||||||
}
|
}
|
||||||
*current = '\0';
|
*current = '\0';
|
||||||
final_length = current - buf + 1;
|
final_length = current - buf + 1;
|
||||||
if (final_length < needed_length && final_length)
|
if (final_length < needed_length && final_length) {
|
||||||
/* should never fail */
|
/* 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;
|
return buf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -958,6 +963,7 @@ tok_nextc(struct tok_state *tok)
|
||||||
newbuf = (char *)PyMem_REALLOC(newbuf,
|
newbuf = (char *)PyMem_REALLOC(newbuf,
|
||||||
newsize);
|
newsize);
|
||||||
if (newbuf == NULL) {
|
if (newbuf == NULL) {
|
||||||
|
PyMem_FREE(tok->buf);
|
||||||
tok->done = E_NOMEM;
|
tok->done = E_NOMEM;
|
||||||
tok->cur = tok->inp;
|
tok->cur = tok->inp;
|
||||||
return EOF;
|
return EOF;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue