diff options
Diffstat (limited to 'src/parse.y')
| -rw-r--r-- | src/parse.y | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/parse.y b/src/parse.y index 8553738e8..33b2d5272 100644 --- a/src/parse.y +++ b/src/parse.y @@ -3399,11 +3399,14 @@ scan_oct(const int *start, int len, int *retlen) const int *s = start; unsigned long retval = 0; + /* PARANOID: assert(len <= 3) */ + while (len-- && *s >= '0' && *s <= '7') { retval <<= 3; retval |= *s++ - '0'; } *retlen = s - start; + return retval; } @@ -3415,12 +3418,15 @@ scan_hex(const int *start, int len, int *retlen) register unsigned long retval = 0; char *tmp; + /* PARANOID: assert(len <= 2) */ + while (len-- && *s && (tmp = strchr(hexdigit, *s))) { retval <<= 4; retval |= (tmp - hexdigit) & 15; s++; } *retlen = s - start; + return retval; } |
