diff options
author | Steve Bennett <steveb@workware.net.au> | 2017-05-11 21:47:27 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2017-05-12 13:01:58 +1000 |
commit | 2a3bfa6b1962af2dfb5c6e49d6dd6b3a39714df9 (patch) | |
tree | 10b4c9be4f293566458d01bb39cfd80378476b81 /jim.c | |
parent | 46d9d687fa0460dc2f92a14130eca18f496c4645 (diff) | |
download | jimtcl-2a3bfa6b1962af2dfb5c6e49d6dd6b3a39714df9.zip jimtcl-2a3bfa6b1962af2dfb5c6e49d6dd6b3a39714df9.tar.gz jimtcl-2a3bfa6b1962af2dfb5c6e49d6dd6b3a39714df9.tar.bz2 |
scan: error on missing conversion char
Don't read invalid memory
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 | 7 |
1 files changed, 6 insertions, 1 deletions
@@ -9890,9 +9890,14 @@ static int SetScanFmtFromAny(Jim_Interp *interp, Jim_Obj *objPtr) } else { /* Remember any valid modifier if given */ - if (strchr("hlL", *fmt) != 0) + if (fmt < fmtEnd && strchr("hlL", *fmt)) descr->modifier = tolower((int)*fmt++); + if (fmt >= fmtEnd) { + fmtObj->error = "missing scan conversion character"; + return JIM_ERR; + } + descr->type = *fmt; if (strchr("efgcsndoxui", *fmt) == 0) { fmtObj->error = "bad scan conversion character"; |