Code Review 7024560: InetAddress.getLocalHost().getHostName() returns localhost for hostnames of length HOST_NAME_MAX
Alan Bateman
Alan.Bateman at oracle.com
Wed Mar 9 08:26:46 PST 2011
Chris Hegarty wrote:
> Alan, Michael,
>
> In Java_java_net_Inet(4|6)AddressImpl_getLocalHostName
> JVM_GetHostName, a.k.a gethostname, is returning ENAMETOOLONG. Then
> falling back to use "localhost", the assumption was that failure would
> only happen when something went wrong, maybe networking is not setup.
>
> It appears that on many Linux variations the given buffer length
> should include space for the null terminator. Our given buffers
> already account for this, just need to pass down the correct length to
> gethostname.
>
> http://cr.openjdk.java.net/~chegar/7024560/webrev.00/webrev/
>
> -Chris.
Are you sure that it is failing with ENAMETOOLONG? I just checked the
man page and is reads "In case the null-terminated hostname does not
fit, no error is returned, but the hostname is truncated. It is
unspecified whether the truncated hostname will be null-terminated",
which suggests to me that we should be careful to null terminate on the
success path.
-Alan.
More information about the net-dev
mailing list