summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpaul <paul>2008-02-28 00:09:04 +0000
committerpaul <paul>2008-02-28 00:09:04 +0000
commit538d0f3a00ec246d41207324d0cb88a0061b0101 (patch)
tree8e1eda06493d8775cded79f54cd9b9e1591aba00
parentc3c92461eb41baadaac3549ad5a99646b3184999 (diff)
downloadquagga-538d0f3a00ec246d41207324d0cb88a0061b0101.tar.bz2
quagga-538d0f3a00ec246d41207324d0cb88a0061b0101.tar.xz
[lib/linklist] Enforce "nodes must have data" invariant more rigorously
2008-02-28 Paul Jakma <paul.jakma@sun.com> * linklist.c: This implementation expects that the data pointer not be null, e.g. listgetdata() asserts this. The list add methods don't apply the same sanity check. Noted by Jim Carlson in bug #437.
-rw-r--r--lib/ChangeLog8
-rw-r--r--lib/linklist.c20
2 files changed, 23 insertions, 5 deletions
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 2263c03c..613a6fcb 100644
--- a/lib/ChangeLog
+++ b/lib/ChangeLog
@@ -1,3 +1,11 @@
+2008-02-28 Paul Jakma <paul.jakma@sun.com>
+
+ * linklist.c: This implementation expects that the data pointer not
+ be null, e.g. listgetdata() asserts this. The list add methods
+ don't apply the same sanity check.
+
+ Noted by Jim Carlson in bug #437.
+
2008-01-11 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
* zebra.h: Revert previous change, no need to include <net/if_media.h>
diff --git a/lib/linklist.c b/lib/linklist.c
index 983da2d1..a16e9e18 100644
--- a/lib/linklist.c
+++ b/lib/linklist.c
@@ -65,7 +65,9 @@ void
listnode_add (struct list *list, void *val)
{
struct listnode *node;
-
+
+ assert (val != NULL);
+
node = listnode_new ();
node->prev = list->tail;
@@ -91,7 +93,9 @@ listnode_add_sort (struct list *list, void *val)
{
struct listnode *n;
struct listnode *new;
-
+
+ assert (val != NULL);
+
new = listnode_new ();
new->data = val;
@@ -130,7 +134,9 @@ void
listnode_add_after (struct list *list, struct listnode *pp, void *val)
{
struct listnode *nn;
-
+
+ assert (val != NULL);
+
nn = listnode_new ();
nn->data = val;
@@ -266,7 +272,9 @@ void
list_add_node_prev (struct list *list, struct listnode *current, void *val)
{
struct listnode *node;
-
+
+ assert (val != NULL);
+
node = listnode_new ();
node->next = current;
node->data = val;
@@ -287,7 +295,9 @@ void
list_add_node_next (struct list *list, struct listnode *current, void *val)
{
struct listnode *node;
-
+
+ assert (val != NULL);
+
node = listnode_new ();
node->prev = current;
node->data = val;