Module Name: src Committed By: rillig Date: Sat Aug 22 14:54:48 UTC 2020
Modified Files: src/usr.bin/make: lst.c lst.h make.c suff.c Log Message: make(1): add strict argument checks for Lst_InsertBefore As with the other modifying operations on lists, the callers already made sure that the arguments are valid. To generate a diff of this commit: cvs rdiff -u -r1.25 -r1.26 src/usr.bin/make/lst.c cvs rdiff -u -r1.31 -r1.32 src/usr.bin/make/lst.h cvs rdiff -u -r1.115 -r1.116 src/usr.bin/make/make.c cvs rdiff -u -r1.104 -r1.105 src/usr.bin/make/suff.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/lst.c diff -u src/usr.bin/make/lst.c:1.25 src/usr.bin/make/lst.c:1.26 --- src/usr.bin/make/lst.c:1.25 Sat Aug 22 14:39:12 2020 +++ src/usr.bin/make/lst.c Sat Aug 22 14:54:48 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.c,v 1.25 2020/08/22 14:39:12 rillig Exp $ */ +/* $NetBSD: lst.c,v 1.26 2020/08/22 14:54:48 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -37,11 +37,11 @@ #include "make.h" #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: lst.c,v 1.25 2020/08/22 14:39:12 rillig Exp $"; +static char rcsid[] = "$NetBSD: lst.c,v 1.26 2020/08/22 14:54:48 rillig Exp $"; #else #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: lst.c,v 1.25 2020/08/22 14:39:12 rillig Exp $"); +__RCSID("$NetBSD: lst.c,v 1.26 2020/08/22 14:54:48 rillig Exp $"); #endif /* not lint */ #endif @@ -192,7 +192,7 @@ Lst_Destroy(Lst list, FreeProc *freeProc /* Insert a new node with the given piece of data before the given node in the * given list. */ -ReturnStatus +static ReturnStatus Lst_InsertBefore(Lst list, LstNode node, void *datum) { LstNode newNode; @@ -230,6 +230,32 @@ Lst_InsertBefore(Lst list, LstNode node, return SUCCESS; } +/* Insert a new node with the given piece of data before the given node in the + * given list. */ +void +Lst_InsertBeforeS(Lst list, LstNode node, void *datum) +{ + LstNode newNode; + + assert(LstIsValid(list)); + assert(!LstIsEmpty(list)); + assert(LstNodeIsValid(node)); + assert(datum != NULL); + + newNode = LstNodeNew(datum); + newNode->prev = node->prev; + newNode->next = node; + + if (node->prev != NULL) { + node->prev->next = newNode; + } + node->prev = newNode; + + if (node == list->first) { + list->first = newNode; + } +} + /* Insert a new node with the given piece of data after the given node in the * given list. */ ReturnStatus Index: src/usr.bin/make/lst.h diff -u src/usr.bin/make/lst.h:1.31 src/usr.bin/make/lst.h:1.32 --- src/usr.bin/make/lst.h:1.31 Sat Aug 22 14:39:12 2020 +++ src/usr.bin/make/lst.h Sat Aug 22 14:54:48 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: lst.h,v 1.31 2020/08/22 14:39:12 rillig Exp $ */ +/* $NetBSD: lst.h,v 1.32 2020/08/22 14:54:48 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -114,7 +114,7 @@ Boolean Lst_IsEmpty(Lst); * Functions to modify a list */ /* Insert an element before another */ -ReturnStatus Lst_InsertBefore(Lst, LstNode, void *); +void Lst_InsertBeforeS(Lst, LstNode, void *); /* Insert an element after another */ ReturnStatus Lst_InsertAfter(Lst, LstNode, void *); /* Place an element at the front of a lst. */ Index: src/usr.bin/make/make.c diff -u src/usr.bin/make/make.c:1.115 src/usr.bin/make/make.c:1.116 --- src/usr.bin/make/make.c:1.115 Sat Aug 22 14:39:12 2020 +++ src/usr.bin/make/make.c Sat Aug 22 14:54:48 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: make.c,v 1.115 2020/08/22 14:39:12 rillig Exp $ */ +/* $NetBSD: make.c,v 1.116 2020/08/22 14:54:48 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: make.c,v 1.115 2020/08/22 14:39:12 rillig Exp $"; +static char rcsid[] = "$NetBSD: make.c,v 1.116 2020/08/22 14:54:48 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.115 2020/08/22 14:39:12 rillig Exp $"); +__RCSID("$NetBSD: make.c,v 1.116 2020/08/22 14:54:48 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -1015,7 +1015,7 @@ MakeBuildChild(void *v_cn, void *toBeMad if (toBeMade_next == NULL) Lst_AppendS(toBeMade, cn); else - Lst_InsertBefore(toBeMade, toBeMade_next, cn); + Lst_InsertBeforeS(toBeMade, toBeMade_next, cn); if (cn->unmade_cohorts != 0) Lst_ForEach(cn->cohorts, MakeBuildChild, toBeMade_next); Index: src/usr.bin/make/suff.c diff -u src/usr.bin/make/suff.c:1.104 src/usr.bin/make/suff.c:1.105 --- src/usr.bin/make/suff.c:1.104 Sat Aug 22 14:39:12 2020 +++ src/usr.bin/make/suff.c Sat Aug 22 14:54:48 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: suff.c,v 1.104 2020/08/22 14:39:12 rillig Exp $ */ +/* $NetBSD: suff.c,v 1.105 2020/08/22 14:54:48 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990, 1993 @@ -69,14 +69,14 @@ */ #ifndef MAKE_NATIVE -static char rcsid[] = "$NetBSD: suff.c,v 1.104 2020/08/22 14:39:12 rillig Exp $"; +static char rcsid[] = "$NetBSD: suff.c,v 1.105 2020/08/22 14:54:48 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.104 2020/08/22 14:39:12 rillig Exp $"); +__RCSID("$NetBSD: suff.c,v 1.105 2020/08/22 14:54:48 rillig Exp $"); #endif #endif /* not lint */ #endif @@ -522,7 +522,7 @@ SuffInsert(Lst l, Suff *s) if (DEBUG(SUFF)) { fprintf(debug_file, "before %s(%d)\n", s2->name, s2->sNum); } - (void)Lst_InsertBefore(l, ln, s); + Lst_InsertBeforeS(l, ln, s); s->refCount++; Lst_AppendS(s->ref, l); } else if (DEBUG(SUFF)) { @@ -1646,7 +1646,7 @@ SuffExpandChildren(LstNode cln, GNode *p fprintf(debug_file, "%s...", gn->name); } /* Add gn to the parents child list before the original child */ - (void)Lst_InsertBefore(pgn->children, cln, gn); + Lst_InsertBeforeS(pgn->children, cln, gn); Lst_AppendS(gn->parents, pgn); pgn->unmade++; /* Expand wildcards on new node */ @@ -1701,7 +1701,7 @@ SuffExpandWildcards(LstNode cln, GNode * gn = Targ_FindNode(cp, TARG_CREATE); /* Add gn to the parents child list before the original child */ - (void)Lst_InsertBefore(pgn->children, cln, gn); + Lst_InsertBeforeS(pgn->children, cln, gn); Lst_AppendS(gn->parents, pgn); pgn->unmade++; }