Module Name:    src
Committed By:   rillig
Date:           Sun Oct 18 19:11:35 UTC 2020

Modified Files:
        src/usr.bin/make: Makefile parse.c

Log Message:
make(1): fix GCC warning about small buffer for cohort_num

Since unmade_cohorts is a signed number (the code contains an underflow
check), the result of the '%' operator could be negative and result in
"#-999999", which would overflow the buffer, truncating the last digit.


To generate a diff of this commit:
cvs rdiff -u -r1.103 -r1.104 src/usr.bin/make/Makefile
cvs rdiff -u -r1.386 -r1.387 src/usr.bin/make/parse.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/usr.bin/make/Makefile
diff -u src/usr.bin/make/Makefile:1.103 src/usr.bin/make/Makefile:1.104
--- src/usr.bin/make/Makefile:1.103	Mon Oct  5 22:15:45 2020
+++ src/usr.bin/make/Makefile	Sun Oct 18 19:11:35 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile,v 1.103 2020/10/05 22:15:45 rillig Exp $
+#	$NetBSD: Makefile,v 1.104 2020/10/18 19:11:35 rillig Exp $
 #	@(#)Makefile	5.2 (Berkeley) 12/28/90
 
 PROG=	make
@@ -65,7 +65,6 @@ COPTS.arch.c+=	-Wno-error=format-truncat
 COPTS.dir.c+=	-Wno-error=format-truncation
 COPTS.main.c+=	-Wno-error=format-truncation
 COPTS.meta.c+=	-Wno-error=format-truncation
-COPTS.parse.c+=	-Wno-error=format-truncation
 .endif
 
 # Whether to compile with GCC 9 from pkgsrc, during development.
@@ -88,7 +87,6 @@ COPTS.arch.c+=	-Wno-error=format-truncat
 COPTS.dir.c+=	-Wno-error=format-truncation
 COPTS.main.c+=	-Wno-error=format-truncation
 COPTS.meta.c+=	-Wno-error=format-truncation
-COPTS.parse.c+=	-Wno-error=format-truncation
 .endif
 
 USE_META?=	yes
@@ -160,7 +158,6 @@ COPTS.arch.c+=	${GCC_NO_FORMAT_TRUNCATIO
 COPTS.dir.c+=	${GCC_NO_FORMAT_TRUNCATION}
 COPTS.main.c+=	${GCC_NO_FORMAT_TRUNCATION} ${GCC_NO_STRINGOP_TRUNCATION}
 COPTS.meta.c+=	${GCC_NO_FORMAT_TRUNCATION}
-COPTS.parse.c+=	${GCC_NO_FORMAT_TRUNCATION}
 
 COPTS+=		-Wdeclaration-after-statement
 

Index: src/usr.bin/make/parse.c
diff -u src/usr.bin/make/parse.c:1.386 src/usr.bin/make/parse.c:1.387
--- src/usr.bin/make/parse.c:1.386	Sun Oct 18 17:19:54 2020
+++ src/usr.bin/make/parse.c	Sun Oct 18 19:11:35 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: parse.c,v 1.386 2020/10/18 17:19:54 rillig Exp $	*/
+/*	$NetBSD: parse.c,v 1.387 2020/10/18 19:11:35 rillig Exp $	*/
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -131,7 +131,7 @@
 #include "pathnames.h"
 
 /*	"@(#)parse.c	8.3 (Berkeley) 3/19/94"	*/
-MAKE_RCSID("$NetBSD: parse.c,v 1.386 2020/10/18 17:19:54 rillig Exp $");
+MAKE_RCSID("$NetBSD: parse.c,v 1.387 2020/10/18 19:11:35 rillig Exp $");
 
 /* types and constants */
 
@@ -834,7 +834,7 @@ TryApplyDependencyOperator(GNode *gn, GN
 	cohort->centurion = gn;
 	gn->unmade_cohorts++;
 	snprintf(cohort->cohort_num, sizeof cohort->cohort_num, "#%d",
-		 gn->unmade_cohorts % 1000000);
+		 (unsigned int)gn->unmade_cohorts % 1000000);
     } else {
 	/*
 	 * We don't want to nuke any previous flags (whatever they were) so we

Reply via email to