diff options
author | Steve Bennett <steveb@workware.net.au> | 2017-04-07 09:16:35 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2017-04-07 11:10:46 +1000 |
commit | cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad (patch) | |
tree | 8089c23952876392345dfa9e61cdcb915a0c8426 /jim.c | |
parent | d139d42051b3539970ff5ec7fca6deb311e7307c (diff) | |
download | jimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.zip jimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.tar.gz jimtcl-cc83b696b6b5e4cef4e312782a3fff23d5cdb8ad.tar.bz2 |
expr: fix crash on invalid ternary order
expr {1 : 2 ? 3}
Reported-by: Ryan Whitworth <me@ryanwhitworth.com>
Signed-off-by: Steve Bennett <steveb@workware.net.au>
Diffstat (limited to 'jim.c')
-rw-r--r-- | jim.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -8791,7 +8791,11 @@ static int ExprCheckCorrectness(Jim_Interp *interp, Jim_Obj *exprObjPtr, ExprByt ternary++; } else if (t->type == JIM_EXPROP_COLON || t->type == JIM_EXPROP_COLON_LEFT) { - ternary--; + if (--ternary < 0) { + /* got : without preceding ? */ + stacklen = 1; + break; + } } /* All operations and operands add one to the stack */ |