LinuxのgethostbynameはIPv4オンリーではなくIPv6もOKであるように拡張されてるような。 man gethostbynameより:
The gethostbyname() function returns a structure of type hostent for the given host name. Here name is either a hostname, or an IPv4 address in standard dot notation (as for inet_addr(3)), or an IPv6 address in colon (and possibly dot) notation. (See RFC 1884 for the description of IPv6 addresses.) If name is an IPv4 or IPv6 address, no
:
未だに gethostbyname なんか使っているんじゃねぇよ (スコア:2)
Qualys のレポート [qualys.com]
- The gethostbyname*() functions are obsolete; with the advent of IPv6, recent applications use getaddrinfo() instead.
IPv6 に対応しようとしたら、必然的に getaddrinfo() を使うんで、意外に問題が起きないケースは少なく無さそう。
getaddrinfo() ならセーフかというと、厳密には getaddrinfo の中で gethostbyname2_r() を呼び出していて、でも、問題を引き起こすのには条件がキツイか
Re:未だに gethostbyname なんか使っているんじゃねぇよ (スコア:2)
LinuxのgethostbynameはIPv4オンリーではなくIPv6もOKであるように拡張されてるような。
man gethostbynameより:
The gethostbyname() function returns a structure of type hostent for
the given host name. Here name is either a hostname, or an IPv4
address in standard dot notation (as for inet_addr(3)), or an IPv6
address in colon (and possibly dot) notation. (See RFC 1884 for the
description of IPv6 addresses.) If name is an IPv4 or IPv6 address, no
: