svn commit: r352068 - head/usr.bin/m4

Baptiste Daroussin bapt at FreeBSD.org
Mon Sep 9 15:28:23 UTC 2019


Author: bapt
Date: Mon Sep  9 15:28:22 2019
New Revision: 352068
URL: https://svnweb.freebsd.org/changeset/base/352068

Log:
  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

Modified:
  head/usr.bin/m4/eval.c

Modified: head/usr.bin/m4/eval.c
==============================================================================
--- head/usr.bin/m4/eval.c	Mon Sep  9 15:24:48 2019	(r352067)
+++ head/usr.bin/m4/eval.c	Mon Sep  9 15:28:22 2019	(r352068)
@@ -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;
 	}
 }
 


More information about the svn-src-all mailing list