diff options
-rw-r--r-- | Parser/myreadline.c | 11 | ||||
-rw-r--r-- | Parser/parsetok.c | 4 | ||||
-rw-r--r-- | Parser/pgenmain.c | 4 | ||||
-rw-r--r-- | Parser/tokenizer.c | 6 |
4 files changed, 14 insertions, 11 deletions
diff --git a/Parser/myreadline.c b/Parser/myreadline.c index 9bf770e..7ce0cdf 100644 --- a/Parser/myreadline.c +++ b/Parser/myreadline.c @@ -86,7 +86,7 @@ char * PyOS_StdioReadline(prompt) char *prompt; { - int n; + size_t n; char *p; n = 100; if ((p = PyMem_MALLOC(n)) == NULL) @@ -95,7 +95,7 @@ PyOS_StdioReadline(prompt) if (prompt) fprintf(stderr, "%s", prompt); fflush(stderr); - switch (my_fgets(p, n, stdin)) { + switch (my_fgets(p, (int)n, stdin)) { case 0: /* Normal case */ break; case 1: /* Interrupt */ @@ -116,11 +116,14 @@ PyOS_StdioReadline(prompt) #endif n = strlen(p); while (n > 0 && p[n-1] != '\n') { - int incr = n+2; + size_t incr = n+2; p = PyMem_REALLOC(p, n + incr); if (p == NULL) return NULL; - if (my_fgets(p+n, incr, stdin) != 0) + if (incr > INT_MAX) { + PyErr_SetString(PyExc_OverflowError, "input line too long"); + } + if (my_fgets(p+n, (int)incr, stdin) != 0) break; n += strlen(p+n); } diff --git a/Parser/parsetok.c b/Parser/parsetok.c index 7e87859..6e8523b 100644 --- a/Parser/parsetok.c +++ b/Parser/parsetok.c @@ -136,7 +136,7 @@ parsetok(tok, g, start, err_ret) for (;;) { char *a, *b; int type; - int len; + size_t len; char *str; type = PyTokenizer_Get(tok, &a, &b); @@ -184,7 +184,7 @@ parsetok(tok, g, start, err_ret) err_ret->lineno = tok->lineno; err_ret->offset = tok->cur - tok->buf; if (tok->buf != NULL) { - int len = tok->inp - tok->buf; + size_t len = tok->inp - tok->buf; err_ret->text = PyMem_NEW(char, len + 1); if (err_ret->text != NULL) { if (len > 0) diff --git a/Parser/pgenmain.c b/Parser/pgenmain.c index 34c3b01..569a588 100644 --- a/Parser/pgenmain.c +++ b/Parser/pgenmain.c @@ -127,7 +127,7 @@ getgrammar(filename) fprintf(stderr, "Parsing error %d, line %d.\n", err.error, err.lineno); if (err.text != NULL) { - int i; + size_t i; fprintf(stderr, "%s", err.text); i = strlen(err.text); if (i == 0 || err.text[i-1] != '\n') @@ -195,7 +195,7 @@ char * PyOS_Readline(prompt) char *prompt; { - int n = 1000; + size_t n = 1000; char *p = PyMem_MALLOC(n); char *q; if (p == NULL) diff --git a/Parser/tokenizer.c b/Parser/tokenizer.c index 7d9a273..3337c75 100644 --- a/Parser/tokenizer.c +++ b/Parser/tokenizer.c @@ -223,9 +223,9 @@ tok_nextc(tok) tok->done = E_EOF; } else if (tok->start != NULL) { - int start = tok->start - tok->buf; - int oldlen = tok->cur - tok->buf; - int newlen = oldlen + strlen(new); + size_t start = tok->start - tok->buf; + size_t oldlen = tok->cur - tok->buf; + size_t newlen = oldlen + strlen(new); char *buf = tok->buf; PyMem_RESIZE(buf, char, newlen+1); tok->lineno++; |