aboutsummaryrefslogtreecommitdiff
path: root/jim.c
diff options
context:
space:
mode:
authorSteve Bennett <steveb@workware.net.au>2017-05-11 21:47:27 +1000
committerSteve Bennett <steveb@workware.net.au>2017-05-12 13:01:58 +1000
commit2a3bfa6b1962af2dfb5c6e49d6dd6b3a39714df9 (patch)
tree10b4c9be4f293566458d01bb39cfd80378476b81 /jim.c
parent46d9d687fa0460dc2f92a14130eca18f496c4645 (diff)
downloadjimtcl-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.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/jim.c b/jim.c
index d324e56..b857865 100644
--- a/jim.c
+++ b/jim.c
@@ -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";