(usagi-core 00277) Re: glibc-2.1.97 fixes from USAGI Project

yoshfuji@linux-ipv6.org yoshfuji@linux-ipv6.org
Wed Nov 8 05:13:00 GMT 2000


Sorry for my late response,

In article < 200011070752.IAA00815@loewis.home.cs.tu-berlin.de > (at Tue, 7 Nov 2000 08:52:28 +0100), "Martin v. Loewis" <martin@loewis.home.cs.tu-berlin.de> says:

> >                              compiled with
> >                         glibc-2.1   glibc-2.2
> > --------------------------------------------------
> > kernel 2.2 + glibc-2.1  buggy       -
> >            + glibc-2.2  ng          buggy
> > 	   + usagi-2.2  ok          ok
> > kernel 2.4 + glibc-2.1  buggy       -
> >            + glibc-2.2  ng          buggy
> >            + usagi-2.2  ok          ok
> 
> For those of us not following IPv6 that closely, could you please
> elaborate on this table somewhat? Specifically, it appears that glibc
> 2.2 compiled applications, when used with glibc 2.2 on a kernel 2.4,
> are still buggy, and that they work fine when your patch is applied -
> IOW, there is are IPv6 bugs in glibc 2.1.9x.

Your interpretation is right.


> Can you please give an example for this bug? What kind of bug is it?
> (application crashes, does not work as expected, does not implement
> latest specification drafts, ...)

There're several bugs.  Major things are:

 a) getaddrinfo() (sysdeps/posix/getaddrinfo.c)

     1. if a node has more that one inet6 addresses, it fills garbage 
        sin6_scope_id.[bug]
     2. getaddrinfo() can return unexpected (protocol) sets.[bug]
     3. raw socket are wrongly sticked with IPPROTO_RAW.[buggy]

 b) getnameinfo() (inet/getnameinfo.c)

     1. NI_NOFQDN flag is broken.  current getnameinfo() checks this flag and
        store appropriate result in the buffer but later it is overwritten
        by fqdn.[bug]
     2. check for sin6_scope_id is wrong; because of this,
        getnameinfo() won't return scope-id in normal cases.[bug]
     3. even if it tried to return scope-id, the result could not be correct;
        its scope-delimiter was missing or it includes unexpected garbage 
        character, etc.[bug]

We're trying to prepare real example.
One possible code to is attatched to this mail.
(License of this code is GPL compatible.)

-- 
Hideaki YOSHIFUJI @ USAGI Project  <yoshfuji@linux-ipv6.org>
PGP5i FP: F731 6599 5EB2 BBA7 1515  1323 1806 A96F 5700 6B25 


More information about the Libc-alpha mailing list