We found a memory leak in our getifaddrs() and if_nameindex()
implementation in libinet6 library.  We do not think that users
can gain privilege using this bug. However, we encourage you to apply
following patch and rebuild all binary files linked with that library.

Index: usagi/libinet6/ifaddrs.c
===================================================================
RCS file: /cvsroot/usagi/usagi/usagi/libinet6/ifaddrs.c,v
retrieving revision 1.20
retrieving revision 1.20.2.1
diff -u -r1.20 -r1.20.2.1
--- usagi/libinet6/ifaddrs.c    23 Aug 2002 05:38:00 -0000      1.20
+++ usagi/libinet6/ifaddrs.c    8 Dec 2002 08:22:23 -0000       1.20.2.1
@@ -1,4 +1,4 @@
-/* $USAGI: ifaddrs.c,v 1.20 2002/08/23 05:38:00 yoshfuji Exp $ */
+/* $USAGI: ifaddrs.c,v 1.20.2.1 2002/12/08 08:22:23 yoshfuji Exp $ */

/*
 * Copyright (C)2000 YOSHIFUJI Hideaki
@@ -360,17 +360,20 @@
static void
free_nlmsglist (struct nlmsg_list *nlm0)
{
-  struct nlmsg_list *nlm;
+  struct nlmsg_list *nlm, *nlm_next;
  int saved_errno;
  if (!nlm0)
    return;
  saved_errno = errno;
-  for (nlm = nlm0; nlm; nlm = nlm->nlm_next)
+  nlm = nlm0;
+  while (nlm)
    {
      if (nlm->nlh)
       free (nlm->nlh);
+      nlm_next = nlm->nlm_next;
+      free(nlm);
+      nlm = nlm_next;
    }
-  free (nlm0);
  __set_errno (saved_errno);
}

Index: usagi/libinet6/ifnames.c
===================================================================
RCS file: /cvsroot/usagi/usagi/usagi/libinet6/ifnames.c,v
retrieving revision 1.21
retrieving revision 1.21.2.1
diff -u -r1.21 -r1.21.2.1
--- usagi/libinet6/ifnames.c    23 Aug 2002 05:38:00 -0000      1.21
+++ usagi/libinet6/ifnames.c    8 Dec 2002 08:22:23 -0000       1.21.2.1
@@ -1,4 +1,4 @@
-/* $USAGI: ifnames.c,v 1.21 2002/08/23 05:38:00 yoshfuji Exp $ */
+/* $USAGI: ifnames.c,v 1.21.2.1 2002/12/08 08:22:23 yoshfuji Exp $ */

/*
 * ifnames.c
@@ -229,17 +229,20 @@
static void
free_nlmsglist (struct nlmsg_list *nlm0)
{
-  struct nlmsg_list *nlm;
+  struct nlmsg_list *nlm, *nlm_next;
  int saved_errno;
  if (!nlm0)
    return;
  saved_errno = errno;
-  for (nlm = nlm0; nlm; nlm = nlm->nlm_next)
+  nlm = nlm0;
+  while (nlm)
    {
      if (nlm->nlh)
       free (nlm->nlh);
+      nlm_next = nlm->nlm_next;
+      free (nlm);
+      nlm = nlm_next;
    }
-  free (nlm0);
  __set_errno (saved_errno);
}