Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/usr.bin/make make(1): trust that Var_Subst never returns NULL
details: https://anonhg.NetBSD.org/src/rev/637b31bb5837
branches: trunk
changeset: 975476:637b31bb5837
user: rillig <rillig%NetBSD.org@localhost>
date: Sat Aug 29 13:16:54 2020 +0000
description:
make(1): trust that Var_Subst never returns NULL
It really never does, and it doesn't even report errors. It just
returns the content of the buffer, up to the first parse error.
diffstat:
usr.bin/make/main.c | 19 +++++++------------
usr.bin/make/make.c | 8 ++++----
usr.bin/make/meta.c | 16 ++++++----------
usr.bin/make/suff.c | 9 +++++----
usr.bin/make/var.c | 23 ++++++++++-------------
5 files changed, 32 insertions(+), 43 deletions(-)
diffs (247 lines):
diff -r 1f9234d55702 -r 637b31bb5837 usr.bin/make/main.c
--- a/usr.bin/make/main.c Sat Aug 29 13:04:30 2020 +0000
+++ b/usr.bin/make/main.c Sat Aug 29 13:16:54 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.328 2020/08/29 13:04:30 rillig Exp $ */
+/* $NetBSD: main.c,v 1.329 2020/08/29 13:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,7 +69,7 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: main.c,v 1.328 2020/08/29 13:04:30 rillig Exp $";
+static char rcsid[] = "$NetBSD: main.c,v 1.329 2020/08/29 13:16:54 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
@@ -81,7 +81,7 @@
#if 0
static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: main.c,v 1.328 2020/08/29 13:04:30 rillig Exp $");
+__RCSID("$NetBSD: main.c,v 1.329 2020/08/29 13:16:54 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -1349,13 +1349,11 @@
Fatal("%s: cannot open %s.", progname,
(char *)Lst_Datum(ln));
} else {
- p1 = Var_Subst("${" MAKEFILE_PREFERENCE "}",
- VAR_CMD, VARE_WANTRES);
- if (p1) {
+ p1 = Var_Subst("${" MAKEFILE_PREFERENCE "}",
+ VAR_CMD, VARE_WANTRES);
(void)str2Lst_Append(makefiles, p1, NULL);
(void)Lst_Find(makefiles, ReadMakefileSucceeded, NULL);
free(p1);
- }
}
/* In particular suppress .depend for '-r -V .OBJDIR -f /dev/null' */
@@ -2044,11 +2042,8 @@
}
expr = "${MAKE_PRINT_VAR_ON_ERROR:@v@$v='${$v}'\n@}";
cp = Var_Subst(expr, VAR_GLOBAL, VARE_WANTRES);
- if (cp) {
- if (*cp)
- printf("%s", cp);
- free(cp);
- }
+ printf("%s", cp);
+ free(cp);
fflush(stdout);
/*
diff -r 1f9234d55702 -r 637b31bb5837 usr.bin/make/make.c
--- a/usr.bin/make/make.c Sat Aug 29 13:04:30 2020 +0000
+++ b/usr.bin/make/make.c Sat Aug 29 13:16:54 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: make.c,v 1.129 2020/08/28 04:48:57 rillig Exp $ */
+/* $NetBSD: make.c,v 1.130 2020/08/29 13:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: make.c,v 1.129 2020/08/28 04:48:57 rillig Exp $";
+static char rcsid[] = "$NetBSD: make.c,v 1.130 2020/08/29 13:16:54 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)make.c 8.1 (Berkeley) 6/6/93";
#else
-__RCSID("$NetBSD: make.c,v 1.129 2020/08/28 04:48:57 rillig Exp $");
+__RCSID("$NetBSD: make.c,v 1.130 2020/08/29 13:16:54 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -500,7 +500,7 @@
free(gn->name);
}
gn->name = Var_Subst(gn->uname, pgn, VARE_WANTRES);
- if (gn->name && gn->uname && strcmp(gn->name, gn->uname) != 0) {
+ if (gn->uname && strcmp(gn->name, gn->uname) != 0) {
/* See if we have a target for this node. */
GNode *tgn = Targ_FindNode(gn->name, TARG_NOCREATE);
if (tgn != NULL)
diff -r 1f9234d55702 -r 637b31bb5837 usr.bin/make/meta.c
--- a/usr.bin/make/meta.c Sat Aug 29 13:04:30 2020 +0000
+++ b/usr.bin/make/meta.c Sat Aug 29 13:16:54 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: meta.c,v 1.110 2020/08/29 10:41:12 rillig Exp $ */
+/* $NetBSD: meta.c,v 1.111 2020/08/29 13:16:54 rillig Exp $ */
/*
* Implement 'meta' mode.
@@ -368,13 +368,13 @@
{
meta_file_t *mfp = mfpp;
char *cmd = cmdp;
- char *cp = NULL;
+ char *cmd_freeIt = NULL;
if (strchr(cmd, '$')) {
- cmd = cp = Var_Subst(cmd, mfp->gn, VARE_WANTRES);
+ cmd = cmd_freeIt = Var_Subst(cmd, mfp->gn, VARE_WANTRES);
}
fprintf(mfp->fp, "CMD %s\n", cmd);
- free(cp);
+ free(cmd_freeIt);
return 0;
}
@@ -628,9 +628,7 @@
metaBailiwick = Lst_Init();
metaBailiwickStr = Var_Subst("${.MAKE.META.BAILIWICK:O:u:tA}",
VAR_GLOBAL, VARE_WANTRES);
- if (metaBailiwickStr) {
- str2Lst_Append(metaBailiwick, metaBailiwickStr, NULL);
- }
+ str2Lst_Append(metaBailiwick, metaBailiwickStr, NULL);
/*
* We ignore any paths that start with ${.MAKE.META.IGNORE_PATHS}
*/
@@ -639,9 +637,7 @@
"/dev /etc /proc /tmp /var/run /var/tmp ${TMPDIR}", VAR_GLOBAL);
metaIgnorePathsStr = Var_Subst("${" MAKE_META_IGNORE_PATHS ":O:u:tA}",
VAR_GLOBAL, VARE_WANTRES);
- if (metaIgnorePathsStr) {
- str2Lst_Append(metaIgnorePaths, metaIgnorePathsStr, NULL);
- }
+ str2Lst_Append(metaIgnorePaths, metaIgnorePathsStr, NULL);
/*
* We ignore any paths that match ${.MAKE.META.IGNORE_PATTERNS}
diff -r 1f9234d55702 -r 637b31bb5837 usr.bin/make/suff.c
--- a/usr.bin/make/suff.c Sat Aug 29 13:04:30 2020 +0000
+++ b/usr.bin/make/suff.c Sat Aug 29 13:16:54 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: suff.c,v 1.134 2020/08/29 12:01:46 rillig Exp $ */
+/* $NetBSD: suff.c,v 1.135 2020/08/29 13:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: suff.c,v 1.134 2020/08/29 12:01:46 rillig Exp $";
+static char rcsid[] = "$NetBSD: suff.c,v 1.135 2020/08/29 13:16:54 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)suff.c 8.4 (Berkeley) 3/21/94";
#else
-__RCSID("$NetBSD: suff.c,v 1.134 2020/08/29 12:01:46 rillig Exp $");
+__RCSID("$NetBSD: suff.c,v 1.135 2020/08/29 13:16:54 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -1281,7 +1281,7 @@
}
cp = Var_Subst(cgn->name, pgn, VARE_UNDEFERR|VARE_WANTRES);
- if (cp != NULL) {
+ {
Lst members = Lst_Init();
if (cgn->type & OP_ARCHV) {
@@ -1384,6 +1384,7 @@
*/
free(cp);
}
+
if (DEBUG(SUFF)) {
fprintf(debug_file, "\n");
}
diff -r 1f9234d55702 -r 637b31bb5837 usr.bin/make/var.c
--- a/usr.bin/make/var.c Sat Aug 29 13:04:30 2020 +0000
+++ b/usr.bin/make/var.c Sat Aug 29 13:16:54 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: var.c,v 1.476 2020/08/29 12:48:17 rillig Exp $ */
+/* $NetBSD: var.c,v 1.477 2020/08/29 13:16:54 rillig Exp $ */
/*
* Copyright (c) 1988, 1989, 1990, 1993
@@ -69,14 +69,14 @@
*/
#ifndef MAKE_NATIVE
-static char rcsid[] = "$NetBSD: var.c,v 1.476 2020/08/29 12:48:17 rillig Exp $";
+static char rcsid[] = "$NetBSD: var.c,v 1.477 2020/08/29 13:16:54 rillig Exp $";
#else
#include <sys/cdefs.h>
#ifndef lint
#if 0
static char sccsid[] = "@(#)var.c 8.3 (Berkeley) 3/19/94";
#else
-__RCSID("$NetBSD: var.c,v 1.476 2020/08/29 12:48:17 rillig Exp $");
+__RCSID("$NetBSD: var.c,v 1.477 2020/08/29 13:16:54 rillig Exp $");
#endif
#endif /* not lint */
#endif
@@ -721,7 +721,7 @@
VAR_GLOBAL, VARE_WANTRES);
}
- if (TRUE) {
+ {
Var *v;
char **av;
char *as;
@@ -1464,14 +1464,12 @@
VAR_DEBUG("ModifyWord_Loop: in \"%s\", replace \"%s\" with \"%s\" "
"to \"%s\"\n",
- word, args->tvar, args->str, s ? s : "(null)");
-
- if (s != NULL && s[0] != '\0') {
- if (s[0] == '\n' || (buf->buf.count > 0 &&
- buf->buf.buffer[buf->buf.count - 1] == '\n'))
- buf->needSep = FALSE;
- SepBuf_AddStr(buf, s);
- }
+ word, args->tvar, args->str, s);
+
+ if (s[0] == '\n' || (buf->buf.count > 0 &&
+ buf->buf.buffer[buf->buf.count - 1] == '\n'))
+ buf->needSep = FALSE;
+ SepBuf_AddStr(buf, s);
free(s);
}
@@ -3615,7 +3613,6 @@
if (strchr(nstr, '$') != NULL && (eflags & VARE_WANTRES) != 0) {
nstr = Var_Subst(nstr, ctxt, eflags);
*freePtr = nstr;
- assert(nstr != NULL);
}
v->flags &= ~(unsigned)VAR_IN_USE;
Home |
Main Index |
Thread Index |
Old Index