diff options
Diffstat (limited to 'Src')
-rw-r--r-- | Src/builtin.c | 4 | ||||
-rw-r--r-- | Src/math.c | 4 | ||||
-rw-r--r-- | Src/utils.c | 2 |
3 files changed, 9 insertions, 1 deletions
diff --git a/Src/builtin.c b/Src/builtin.c index f11d5aa51..99eef93aa 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -1744,6 +1744,10 @@ typeset_setbase(const char *name, Param pm, Options ops, int on, int always) zwarnnam(name, "bad precision value: %s", arg); return 1; } + if (pm->base < 2 || pm->base > 36) { + zwarnnam(name, "invalid base: %d", pm->base); + return 1; + } } else if (always) pm->base = 0; diff --git a/Src/math.c b/Src/math.c index e1cde5f03..3374efddd 100644 --- a/Src/math.c +++ b/Src/math.c @@ -460,6 +460,10 @@ zzlex(void) } if(*ptr != ']') goto bofs; + if (outputradix < 2 || outputradix > 36) { + zerr("invalid base: %d", outputradix); + return EOI; + } ptr++; break; } diff --git a/Src/utils.c b/Src/utils.c index d3319f0a9..4992680fe 100644 --- a/Src/utils.c +++ b/Src/utils.c @@ -1834,7 +1834,7 @@ zstrtol(const char *s, char **t, int base) base = 8; } inp = s; - if (base > 36) { + if (base < 2 || base > 36) { zerr("invalid base: %d", base); return (zlong)0; } else if (base <= 10) |