From ad10fdc2b781c481fe7793dc9eb735d0bb493921 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Wed, 8 Aug 2007 22:24:40 +0000 Subject: [PATCH] natVMInetAddressPosix.cc (java::net::VMInetAddress::getLocalHostname): Allocate buffer dynamically. 2007-08-08 Samuel Thibault * java/net/natVMInetAddressPosix.cc (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]: Allocate buffer dynamically. From-SVN: r127305 --- libjava/ChangeLog | 6 ++++++ libjava/java/net/natVMInetAddressPosix.cc | 15 +++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libjava/ChangeLog b/libjava/ChangeLog index e9dbb5fb3bb2..cbec57f311e6 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,9 @@ +2007-08-08 Samuel Thibault + + * java/net/natVMInetAddressPosix.cc + (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]: + Allocate buffer dynamically. + 2007-08-04 Alfred M. Szmidt * java/io/natFilePosix.cc (init_native) [!MAXPATHLEN]: Define to 0. diff --git a/libjava/java/net/natVMInetAddressPosix.cc b/libjava/java/net/natVMInetAddressPosix.cc index 7fbe1bb1ff0a..bc25f3654aa0 100644 --- a/libjava/java/net/natVMInetAddressPosix.cc +++ b/libjava/java/net/natVMInetAddressPosix.cc @@ -47,10 +47,25 @@ java::net::VMInetAddress::getLocalHostname () { char *chars; #ifdef HAVE_GETHOSTNAME +#ifdef MAXHOSTNAMELEN char buffer[MAXHOSTNAMELEN]; if (gethostname (buffer, MAXHOSTNAMELEN)) return NULL; chars = buffer; +#else + size_t size = 256; + while (1) { + char buffer[size]; + if (!gethostname (buffer, size-1)) + { + buffer[size-1] = 0; + return JvNewStringUTF (buffer); + } + else if (errno != ENAMETOOLONG) + return NULL; + size *= 2; + } +#endif #elif HAVE_UNAME struct utsname stuff; if (uname (&stuff) != 0) -- 2.43.5