summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorTodd C. Miller <millert@cvs.openbsd.org>2017-12-05 17:47:10 +0000
committerTodd C. Miller <millert@cvs.openbsd.org>2017-12-05 17:47:10 +0000
commitb20a9b674e72414128b0aae3371e914fcd2e231d (patch)
tree2cc318efc0ce4c217c294cffd0d7a11929430462 /usr.bin
parent9b56e51d3cb809545f83c1a92c6f6997f94da81f (diff)
Fix a case where we could go off the end of the buffer.
Crash found by Sergey Bronnikov using afl-fuzz. Based on a diff from and OK by espie@
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/make/for.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/usr.bin/make/for.c b/usr.bin/make/for.c
index 64887d5e769..e285d2a6a29 100644
--- a/usr.bin/make/for.c
+++ b/usr.bin/make/for.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: for.c,v 1.46 2015/01/23 13:18:40 espie Exp $ */
+/* $OpenBSD: for.c,v 1.47 2017/12/05 17:47:09 millert Exp $ */
/* $NetBSD: for.c,v 1.4 1996/11/06 17:59:05 christos Exp $ */
/*
@@ -155,9 +155,12 @@ For_Eval(const char *line)
Parse_Error(PARSE_FATAL, "Syntax error in for");
return 0;
}
- endVar = ptr++;
- while (ISSPACE(*ptr))
+ endVar = ptr;
+ if (*ptr) {
ptr++;
+ while (ISSPACE(*ptr))
+ ptr++;
+ }
/* End of variable list ? */
if (endVar - wrd == 2 && wrd[0] == 'i' && wrd[1] == 'n')
break;