aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2007-08-08 22:24:40 +0000
committerMatthias Klose <doko@gcc.gnu.org>2007-08-08 22:24:40 +0000
commitad10fdc2b781c481fe7793dc9eb735d0bb493921 (patch)
tree3cf3732c466af176042003f31da6d1214c6a73c6
parent0eab684046dc0a228233530ed9a01fcaf2220cbe (diff)
downloadgcc-ad10fdc2b781c481fe7793dc9eb735d0bb493921.zip
gcc-ad10fdc2b781c481fe7793dc9eb735d0bb493921.tar.gz
gcc-ad10fdc2b781c481fe7793dc9eb735d0bb493921.tar.bz2
natVMInetAddressPosix.cc (java::net::VMInetAddress::getLocalHostname): Allocate buffer dynamically.
2007-08-08 Samuel Thibault <samuel.thibault@ens-lyon.org> * java/net/natVMInetAddressPosix.cc (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]: Allocate buffer dynamically. From-SVN: r127305
-rw-r--r--libjava/ChangeLog6
-rw-r--r--libjava/java/net/natVMInetAddressPosix.cc15
2 files changed, 21 insertions, 0 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index e9dbb5f..cbec57f 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,9 @@
+2007-08-08 Samuel Thibault <samuel.thibault@ens-lyon.org>
+
+ * java/net/natVMInetAddressPosix.cc
+ (java::net::VMInetAddress::getLocalHostname) [!MAXHOSTNAMELEN]:
+ Allocate buffer dynamically.
+
2007-08-04 Alfred M. Szmidt <ams@gnu.org>
* 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 7fbe1bb..bc25f36 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)