mirror of https://github.com/rusefi/lua.git
if numeral overflows the reading buffer, signal it as invalid input
(resulting in nil)
This commit is contained in:
parent
11aefa4478
commit
e9d86eddf3
8
liolib.c
8
liolib.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
** $Id: liolib.c,v 2.124 2014/05/15 15:21:06 roberto Exp $
|
** $Id: liolib.c,v 2.125 2014/05/21 15:24:21 roberto Exp roberto $
|
||||||
** Standard I/O (and system) library
|
** Standard I/O (and system) library
|
||||||
** See Copyright Notice in lua.h
|
** See Copyright Notice in lua.h
|
||||||
*/
|
*/
|
||||||
|
@ -371,7 +371,7 @@ typedef struct {
|
||||||
FILE *f; /* file being read */
|
FILE *f; /* file being read */
|
||||||
int c; /* current character (look ahead) */
|
int c; /* current character (look ahead) */
|
||||||
int n; /* number of elements in buffer 'buff' */
|
int n; /* number of elements in buffer 'buff' */
|
||||||
char buff[MAXRN];
|
char buff[MAXRN + 1]; /* +1 for ending '\0' */
|
||||||
} RN;
|
} RN;
|
||||||
|
|
||||||
|
|
||||||
|
@ -379,8 +379,10 @@ typedef struct {
|
||||||
** Add current char to buffer (if not out of space) and read next one
|
** Add current char to buffer (if not out of space) and read next one
|
||||||
*/
|
*/
|
||||||
static int nextc (RN *rn) {
|
static int nextc (RN *rn) {
|
||||||
if (rn->n >= MAXRN) /* buffer overflow? */
|
if (rn->n >= MAXRN) { /* buffer overflow? */
|
||||||
|
rn->buff[0] = '\0'; /* invalidate result */
|
||||||
return 0; /* fail */
|
return 0; /* fail */
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
rn->buff[rn->n++] = rn->c; /* save current char */
|
rn->buff[rn->n++] = rn->c; /* save current char */
|
||||||
rn->c = l_getc(rn->f); /* read next one */
|
rn->c = l_getc(rn->f); /* read next one */
|
||||||
|
|
Loading…
Reference in New Issue