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';
|
*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…
x
Reference in New Issue
Block a user