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): remove redundant assertions in lst.c



details:   https://anonhg.NetBSD.org/src/rev/5d28780acb92
branches:  trunk
changeset: 940009:5d28780acb92
user:      rillig <rillig%NetBSD.org@localhost>
date:      Wed Sep 30 06:27:02 2020 +0000

description:
make(1): remove redundant assertions in lst.c

These pointers are dereferenced shortly after the assertion, which
reliably leads to a SIGSEGV.

diffstat:

 usr.bin/make/lst.c |  42 +++++++-----------------------------------
 1 files changed, 7 insertions(+), 35 deletions(-)

diffs (171 lines):

diff -r e8554a2d6500 -r 5d28780acb92 usr.bin/make/lst.c
--- a/usr.bin/make/lst.c        Wed Sep 30 06:15:43 2020 +0000
+++ b/usr.bin/make/lst.c        Wed Sep 30 06:27:02 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: lst.c,v 1.73 2020/09/27 21:35:16 rillig Exp $ */
+/* $NetBSD: lst.c,v 1.74 2020/09/30 06:27:02 rillig Exp $ */
 
 /*
  * Copyright (c) 1988, 1989, 1990, 1993
@@ -34,7 +34,7 @@
 
 #include "make.h"
 
-MAKE_RCSID("$NetBSD: lst.c,v 1.73 2020/09/27 21:35:16 rillig Exp $");
+MAKE_RCSID("$NetBSD: lst.c,v 1.74 2020/09/30 06:27:02 rillig Exp $");
 
 /* Allocate and initialize a list node.
  *
@@ -79,8 +79,6 @@
     List *newList;
     ListNode *node;
 
-    assert(list != NULL);
-
     newList = Lst_Init();
 
     for (node = list->first; node != NULL; node = node->next) {
@@ -98,8 +96,6 @@
     ListNode *node;
     ListNode *next;
 
-    assert(list != NULL);
-
     for (node = list->first; node != NULL; node = next) {
        next = node->next;
        free(node);
@@ -116,9 +112,6 @@
     ListNode *node;
     ListNode *next;
 
-    assert(list != NULL);
-    assert(freeProc != NULL);
-
     for (node = list->first; node != NULL; node = next) {
        next = node->next;
        freeProc(node->datum);
@@ -139,9 +132,7 @@
 {
     ListNode *newNode;
 
-    assert(list != NULL);
     assert(!LstIsEmpty(list));
-    assert(node != NULL);
     assert(datum != NULL);
 
     newNode = LstNodeNew(datum);
@@ -164,7 +155,6 @@
 {
     ListNode *node;
 
-    assert(list != NULL);
     assert(datum != NULL);
 
     node = LstNodeNew(datum);
@@ -186,7 +176,6 @@
 {
     ListNode *node;
 
-    assert(list != NULL);
     assert(datum != NULL);
 
     node = LstNodeNew(datum);
@@ -207,9 +196,6 @@
 void
 Lst_Remove(List *list, ListNode *node)
 {
-    assert(list != NULL);
-    assert(node != NULL);
-
     /*
      * unlink it from the list
      */
@@ -259,18 +245,16 @@
 void
 LstNode_Set(ListNode *node, void *datum)
 {
-    assert(node != NULL);
     assert(datum != NULL);
 
     node->datum = datum;
 }
 
-/* Replace the datum in the given node to NULL. */
+/* Replace the datum in the given node to NULL.
+ * Having NULL values in a list is unusual though. */
 void
 LstNode_SetNull(ListNode *node)
 {
-    assert(node != NULL);
-
     node->datum = NULL;
 }
 
@@ -313,7 +297,6 @@
 {
     ListNode *node;
 
-    assert(list != NULL);
     assert(datum != NULL);
 
     for (node = list->first; node != NULL; node = node->next) {
@@ -358,7 +341,7 @@
        Boolean done = next == NULL;
 
        tln->priv_useCount++;
-       result = (*proc)(tln->datum, procData);
+       result = proc(tln->datum, procData);
        tln->priv_useCount--;
 
        /*
@@ -387,9 +370,6 @@
 void
 Lst_MoveAll(List *list1, List *list2)
 {
-    assert(list1 != NULL);
-    assert(list2 != NULL);
-
     if (list2->first != NULL) {
        list2->first->prev = list1->last;
        if (list1->last != NULL) {
@@ -435,7 +415,6 @@
 void
 Lst_Open(List *list)
 {
-    assert(list != NULL);
     assert(!list->priv_isOpen);
 
     list->priv_isOpen = TRUE;
@@ -450,7 +429,6 @@
 {
     ListNode *node;
 
-    assert(list != NULL);
     assert(list->priv_isOpen);
 
     list->priv_prev = list->priv_curr;
@@ -492,7 +470,6 @@
 void
 Lst_Close(List *list)
 {
-    assert(list != NULL);
     assert(list->priv_isOpen);
 
     list->priv_isOpen = FALSE;
@@ -515,14 +492,9 @@
 void *
 Lst_Dequeue(List *list)
 {
-    void *datum;
-
-    assert(list != NULL);
-    assert(!LstIsEmpty(list));
-
-    datum = list->first->datum;
+    void *datum = list->first->datum;
     Lst_Remove(list, list->first);
-    assert(datum != NULL);
+    assert(datum != NULL);     /* since NULL would mean end of the list */
     return datum;
 }
 



Home | Main Index | Thread Index | Old Index