summaryrefslogtreecommitdiff
path: root/Src/math.c
diff options
context:
space:
mode:
authorJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2021-04-06 23:05:03 +0900
committerJun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>2021-04-06 23:05:03 +0900
commit0f62e07c802e3fa58d1199f34fcf9772da70c264 (patch)
treea85aec1da2877c2c97439f5fac5b1b24692e1f94 /Src/math.c
parentccc7ff90a46d7b1bdcf61bae2dba20d68dca7654 (diff)
downloadzsh-0f62e07c802e3fa58d1199f34fcf9772da70c264.tar.gz
zsh-0f62e07c802e3fa58d1199f34fcf9772da70c264.zip
48389: getkeystring() should not return ptr to local var
Now it returns NULL if called with GETKEY_SINGLE_CHAR and next character is not found. Caller must check the return value.
Diffstat (limited to 'Src/math.c')
-rw-r--r--Src/math.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/Src/math.c b/Src/math.c
index b57ba42d4..1d0d86639 100644
--- a/Src/math.c
+++ b/Src/math.c
@@ -840,13 +840,18 @@ zzlex(void)
if (*ptr == '#') {
if (*++ptr == '\\' || *ptr == '#') {
int v;
+ char *optr = ptr;
ptr++;
if (!*ptr) {
zerr("bad math expression: character missing after ##");
return EOI;
}
- ptr = getkeystring(ptr, NULL, GETKEYS_MATH, &v);
+ if(!(ptr = getkeystring(ptr, NULL, GETKEYS_MATH, &v))) {
+ zerr("bad math expression: bad character after ##");
+ ptr = optr;
+ return EOI;
+ }
yyval.u.l = v;
return NUM;
}