Check for leading zero in js_isarrayindex that caused false positives.

We're supposed to check whether a string turned into an integer and back
is itself, while also returning the value of the integer. We were
unintentionally allowing integers with leading zero through.
This commit is contained in:
Tor Andersson
2020-01-20 12:18:53 +01:00
parent fe71080c59
commit e082e6e61c

View File

@@ -444,6 +444,11 @@ void js_rot(js_State *J, int n)
int js_isarrayindex(js_State *J, const char *p, int *idx)
{
int n = 0;
/* check for '0' and integers with leading zero */
if (p[0] == '0')
return (p[1] == 0) ? *idx = 0, 1 : 0;
while (*p) {
int c = *p++;
if (c >= '0' && c <= '9') {