2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>

	* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
	* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
	  avoid overflow.
	* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
	* if.h: Fix comments to reflect that if_lookup_by_name and
	  if_get_by_name now require the argument strings to be NUL-terminated.
	* if.c: (if_lookup_by_name) Compare using strcmp.
	  (if_get_by_name) Pass strlen(ifname) as 2nd arg to if_create.
diff --git a/zebra/ChangeLog b/zebra/ChangeLog
index 924f0f0..1d0f175 100644
--- a/zebra/ChangeLog
+++ b/zebra/ChangeLog
@@ -1,5 +1,12 @@
 2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
 
+	* if_ioctl.c: (interface_list_ioctl) Use if_get_by_name_len.
+	* if_proc.c: (ifaddr_proc_ipv6) Increase size of ifname buffer to
+	  avoid overflow.
+	* kernel_socket.c: (ifan_read) Use if_get_by_name_len.
+
+2005-04-02 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+
 	* kernel_socket.c: (ifm_read) Use new if_lookup_by_name_len function
 	  to save a memcpy.
 	* if_ioctl_solaris.c: (interface_list_ioctl) Fix subtle bug with new
diff --git a/zebra/if_ioctl.c b/zebra/if_ioctl.c
index 90f18e2..0d7713d 100644
--- a/zebra/if_ioctl.c
+++ b/zebra/if_ioctl.c
@@ -102,7 +102,9 @@
       int size;
 
       ifreq = (struct ifreq *)((caddr_t) ifconf.ifc_req + n);
-      ifp = if_get_by_name (ifreq->ifr_name);
+      ifp = if_get_by_name_len(ifreq->ifr_name,
+			       strnlen(ifreq->ifr_name,
+				       sizeof(ifreq->ifr_name)));
       if_add_update (ifp);
       size = ifreq->ifr_addr.sa_len;
       if (size < sizeof (ifreq->ifr_addr))
@@ -113,7 +115,9 @@
 #else
   for (n = 0; n < ifconf.ifc_len; n += sizeof(struct ifreq))
     {
-      ifp = if_get_by_name (ifreq->ifr_name);
+      ifp = if_get_by_name_len(ifreq->ifr_name,
+			       strnlen(ifreq->ifr_name,
+				       sizeof(ifreq->ifr_name)));
       if_add_update (ifp);
       ifreq++;
     }
diff --git a/zebra/if_proc.c b/zebra/if_proc.c
index 504d2f3..3257d03 100644
--- a/zebra/if_proc.c
+++ b/zebra/if_proc.c
@@ -212,7 +212,7 @@
   char buf[PROCBUFSIZ];
   int n;
   char addr[33];
-  char ifname[20];
+  char ifname[21];
   int ifindex, plen, scope, status;
   struct interface *ifp;
   struct prefix_ipv6 p;
diff --git a/zebra/kernel_socket.c b/zebra/kernel_socket.c
index 1212563..c1f785d 100644
--- a/zebra/kernel_socket.c
+++ b/zebra/kernel_socket.c
@@ -201,7 +201,9 @@
   if (ifp == NULL && ifan->ifan_what == IFAN_ARRIVAL)
     {
       /* Create Interface */
-      ifp = if_get_by_name (ifan->ifan_name);
+      ifp = if_get_by_name_len(ifan->ifan_name,
+			       strnlen(ifan->ifan_name,
+				       sizeof(ifan->ifan_name)));
       ifp->ifindex = ifan->ifan_index;
 
       if_add_update (ifp);