diff options
Diffstat (limited to 'py/parsenumbase.c')
| -rw-r--r-- | py/parsenumbase.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/py/parsenumbase.c b/py/parsenumbase.c index cb524057f..31e4a9164 100644 --- a/py/parsenumbase.c +++ b/py/parsenumbase.c @@ -29,8 +29,10 @@ // find real radix base, and strip preceding '0x', '0o' and '0b' // puts base in *base, and returns number of bytes to skip the prefix mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base) { - (void)len; // TODO use given len? const byte *p = (const byte*)str; + if (len <= 1) { + goto no_prefix; + } unichar c = *(p++); if ((*base == 0 || *base == 16) && c == '0') { c = *(p++); @@ -57,10 +59,11 @@ mp_uint_t mp_parse_num_base(const char *str, mp_uint_t len, mp_uint_t *base) { p -= 2; } } else { + p--; + no_prefix: if (*base == 0) { *base = 10; } - p--; } return p - (const byte*)str; } |
