[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.
diff --git a/lib/ChangeLog b/lib/ChangeLog
index 2263c03..613a6fc 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 983da2d..a16e9e1 100644
--- a/lib/linklist.c
+++ b/lib/linklist.c
@@ -65,7 +65,9 @@
 listnode_add (struct list *list, void *val)
 {
   struct listnode *node;
-
+  
+  assert (val != NULL);
+  
   node = listnode_new ();
 
   node->prev = list->tail;
@@ -91,7 +93,9 @@
 {
   struct listnode *n;
   struct listnode *new;
-
+  
+  assert (val != NULL);
+  
   new = listnode_new ();
   new->data = val;
 
@@ -130,7 +134,9 @@
 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 @@
 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 @@
 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;