aboutsummaryrefslogtreecommitdiff
path: root/usr.bin/m4
diff options
context:
space:
mode:
authorBaptiste Daroussin <bapt@FreeBSD.org>2019-09-09 15:28:22 +0000
committerBaptiste Daroussin <bapt@FreeBSD.org>2019-09-09 15:28:22 +0000
commite0f4e0415ec97b6060528246d3e41330dc2c9f1e (patch)
tree5d9e1da881a82d1cf6d4630d9c924a09cbe8b431 /usr.bin/m4
parentfdb905e20f6b3378b1905d7e7cacf807fc95867d (diff)
downloadsrc-e0f4e0415ec97b6060528246d3e41330dc2c9f1e.tar.gz
src-e0f4e0415ec97b6060528246d3e41330dc2c9f1e.zip
m4: import patch from OpenBSD
by espie@ ifelse is special, fix argv parsing to avoid segfault problem noticed by Matthew Green (netbsd), slightly different fix so that argc counting makes more sense. we might want to warn on wrong number of parameters later, but this is somewhat inconsistent depending on the builtin right now. okay millert@ Obtained from: OpenBSD
Notes
Notes: svn path=/head/; revision=352068
Diffstat (limited to 'usr.bin/m4')
-rw-r--r--usr.bin/m4/eval.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/usr.bin/m4/eval.c b/usr.bin/m4/eval.c
index 1630b461f423..ee7ce2644beb 100644
--- a/usr.bin/m4/eval.c
+++ b/usr.bin/m4/eval.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: eval.c,v 1.75 2017/06/15 13:48:42 bcallah Exp $ */
+/* $OpenBSD: eval.c,v 1.76 2017/10/23 15:21:19 espie Exp $ */
/* $NetBSD: eval.c,v 1.7 1996/11/10 21:21:29 pk Exp $ */
/*-
@@ -201,8 +201,7 @@ expand_builtin(const char *argv[], int argc, int td)
}
case IFELTYPE:
- if (argc > 4)
- doifelse(argv, argc);
+ doifelse(argv, argc);
break;
case IFDFTYPE:
@@ -695,17 +694,17 @@ dotrace(const char *argv[], int argc, int on)
static void
doifelse(const char *argv[], int argc)
{
- cycle {
- if (STREQ(argv[2], argv[3]))
+ while (argc > 4) {
+ if (STREQ(argv[2], argv[3])) {
pbstr(argv[4]);
- else if (argc == 6)
+ break;
+ } else if (argc == 6) {
pbstr(argv[5]);
- else if (argc > 6) {
+ break;
+ } else {
argv += 3;
argc -= 3;
- continue;
}
- break;
}
}