Hi,

>>>>> On Sat, 04 Jan 2003 12:47:29 -0800
>>>>> Terry Lambert <[EMAIL PROTECTED]> said:

tlambert2> The FreeBSD library bug is that the /etc/hosts file entry:

tlambert2>      ::1

tlambert2> is not canonized before being compared, for the reverse lookup.

No, it does.  I've tested it with following program:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <netdb.h>

main()
{
    struct sockaddr_in6 sin6;
    struct hostent *ht;
    int error;
    char hbuf[NI_MAXHOST];

    ht = gethostbyaddr((char *)&in6addr_loopback, sizeof(struct in6_addr),
                       AF_INET6);
    if (!ht)
        errx(1, "gethostbyaddr: lookup faild");
    printf("gethostbyaddr: %s\n", ht->h_name);

    ht = getipnodebyaddr((char *)&in6addr_loopback, sizeof(struct in6_addr),
                         AF_INET6, &error);
    if (!ht)
        errx(1, "getipnodebyaddr: lookup faild %d", error);
    printf("getipnodebyaddr: %s\n", ht->h_name);

    memset(&sin6, 0, sizeof(sin6));
    memcpy(&sin6.sin6_addr, &in6addr_loopback, sizeof(struct in6_addr));
    sin6.sin6_family = AF_INET6;
    sin6.sin6_len = sizeof(sin6);
    if (getnameinfo((struct sockaddr *)&sin6, sizeof(sin6),
                    hbuf, sizeof(hbuf), NULL, 0, 0) != 0)
        errx(1, "getnameinfo: lookup faild");
    printf("getnameinfo: %s\n", hbuf);
}

Then, it returned as expected:

        ume@mille:1082% ./revtest
        gethostbyaddr: localhost
        getipnodebyaddr: localhost
        getnameinfo: localhost

where my /etc/host.conf is:

        hosts
        #bind

and my /etc/hosts contains:

        ::1                     localhost localhost.mahoroba.org
        127.0.0.1               localhost localhost.mahoroba.org

When I commented the ::1 line out in /etc/hosts, the test program
returned:

        me@mille:1087% ./revtest
        revtest: gethostbyaddr: lookup faild

So, I cannot understand what you say.

tlambert2> It can probably be worked around by spcifying:

tlambert2>      0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1

tlambert2> as the left hand side for the IPv6 loopback address, instead of ::1,
tlambert2> in the /etc/hosts file.  I don't recommend this, since it would not
tlambert2> encourage the author of the IPv6 resovler code to fix the bug they
tlambert2> introduced.

You don't need to do it at all.

Sincerely,

--
Hajimu UMEMOTO @ Internet Mutual Aid Society Yokohama, Japan
[EMAIL PROTECTED]  [EMAIL PROTECTED]  ume@{,jp.}FreeBSD.org
http://www.imasy.org/~ume/

To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to