[kaffe] java.net.InetAddress.getAllByName returns wrong value for localhost

Ito Kazumitsu kaz@maczuka.gcd.org
Tue Sep 9 09:00:03 2003


Hi,

I am afraid there is something wrong around java.net.InetAddress.

First, I patched InetAddress.java for debugging:

bash-2.05b$ diff -u java/net/InetAddress.java.orig java/net/InetAddress.java
--- java/net/InetAddress.java.orig	Sun Sep  7 23:09:00 2003
+++ java/net/InetAddress.java	Wed Sep 10 00:20:04 2003
@@ -306,8 +306,15 @@
 
     for (int i = 0; i < iplist.length; i++)
       {
-        if (iplist[i].length != 4)
+        if (iplist[i].length != 4) {
+	  System.err.println("i=" + i + " iplist[i].length=" + iplist[i].length);
+	  for (int j = 0; j < iplist[i].length; j++) {
+	    System.err.print("" + iplist[i][j] + ".");
+	  }
+	  System.err.println();
+	  System.err.flush();
           throw new UnknownHostException (hostname);
+	}
 
         // Don't store the hostname in order to force resolution of the
         // canonical names of these ip's when the user asks for the hostname

Then I ran the following test.

bash-2.05b$ cat TestInetAddress.java
import java.net.InetAddress;
public class TestInetAddress {
    public static void main(String args[]) throws Exception {
	String host = args[0];
	InetAddress ia = InetAddress.getByName(host);
	System.out.println(host + " = " + ia);
    }
}
bash-2.05b$ java TestInetAddress ph.maczuka.gcd.org
ph.maczuka.gcd.org = ph.maczuka.gcd.org/192.168.0.1
bash-2.05b$ java TestInetAddress localhost         
i=0 iplist[i].length=16
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.1.
java.net.UnknownHostException: localhost
   at java.net.InetAddress.getAllByName (InetAddress.java:316)
   at java.net.InetAddress.getByName (InetAddress.java:382)
   at TestInetAddress.main (TestInetAddress.java:5)