PR 161548

Matthew Seaman matthew at freebsd.org
Wed Sep 26 08:44:26 UTC 2012


On 26/09/2012 07:27, Kevin Lo wrote:
> On 2012/09/25 14:03, Matthew Seaman wrote:
>> On 24/09/2012 22:29, Jerry wrote:
>>> Is there any specific reason that this PR: 161548 is still marked as
>>> open?
>>>
>>> o 2011/10/13 bin/161548 [patch] getent(1) inconsistent treatment of
>>> IPv6 host data
>> It simply hasn't attracted the attention of anyone with a src commit
>> bit. Yet.
> 
> There's no need to declare he4 and he6 as struct hostent,
> the original declaration of he is fine. So here is patch.
> 
> Index: usr.bin/getent/getent.c
> ===================================================================
> --- usr.bin/getent/getent.c     (revision 240947)
> +++ usr.bin/getent/getent.c     (working copy)
> @@ -285,6 +285,7 @@ hosts(int argc, char *argv[])
>         assert(argv != NULL);
> 
>         sethostent(1);
> +       he = NULL;
>         rv = RV_OK;
>         if (argc == 2) {
>                 while ((he = gethostent()) != NULL)
> @@ -295,8 +296,9 @@ hosts(int argc, char *argv[])
>                                 he = gethostbyaddr(addr, IN6ADDRSZ,
> AF_INET6);
>                         else if (inet_pton(AF_INET, argv[i], (void
> *)addr) > 0)
>                                 he = gethostbyaddr(addr, INADDRSZ,
> AF_INET);
> -                       else
> -                               he = gethostbyname(argv[i]);
> +                       else if ((he = gethostbyname2(argv[i],
> AF_INET6)) ==
> +                           NULL)
> +                               he = gethostbyname2(argv[i], AF_INET);
>                         if (he != NULL)
>                                 hostsprint(he);
>                         else {


Not so.  Hosts frequently have both IPv6 and IPv4 addresses: your patch
would print only the IPv6 address in that case.

	Cheers,

	Matthew




More information about the freebsd-questions mailing list