Thread (1 message) 1 message, 1 author, 2008-06-07

Re: [Bugme-new] [Bug 10880] New: include/linux/if_addr.h: negative preferred lifetimes of addresses

From: Andrew Morton <akpm@linux-foundation.org>
Date: 2008-06-07 19:01:57

On Sat,  7 Jun 2008 03:04:43 -0700 (PDT) bugme-daemon@bugzilla.kernel.org wrote:
http://bugzilla.kernel.org/show_bug.cgi?id=10880

           Summary: include/linux/if_addr.h: negative preferred lifetimes of
                    addresses
           Product: Networking
           Version: 2.5
     KernelVersion: 2.6.25.4
          Platform: All
        OS/Version: Linux
              Tree: Mainline
            Status: NEW
          Severity: normal
          Priority: P1
         Component: IPV6
        AssignedTo: yoshfuji@linux-ipv6.org
        ReportedBy: benedikt@gollatz.net


Recently, I noticed that iproute2 would return me preferred lifetimes of IPv6
adresses close to 2^32 on links where prefixes are advertised with a preferred
lifetime of 0. A quick look into the source revealed that the preferred
lifetime is output using a format string containing "%u"; the incriminating
lines being

  struct ifa_cacheinfo *ci = RTA_DATA(rta_tb[IFA_CACHEINFO]);
  char buf[128];
  fprintf(fp, "%s", _SL_);
  [...]
  if (ci->ifa_prefered == INFINITY_LIFE_TIME)
       sprintf(buf+strlen(buf), " preferred_lft forever");
  else
       sprintf(buf+strlen(buf), " preferred_lft %usec",
               ci->ifa_prefered);
  fprintf(fp, "       %s", buf);

When calling iproute2 oftenly shortly after a prefix has been advertised on the
link, one could see that there actually was an integer underflow going on (the
output changed from "0" to "forever" to 2^32-1).

Interestringly, if_addr.h does define ifa_prefered to be a __u32, so iproute2
merely implements the interface. RFC4862 mandates that the preferred lifetime
always is lower than or equal to the valid lifetime, which is also defined to
be a __u32.

I'm certainly no expert in the linux kernel code, but this looks like a bug to
me. Why is ifa_prefered defined to be non-negative?

Benedikt


-- 
Configure bugmail: http://bugzilla.kernel.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help