java-1.8.0-openjdk/SOURCES/jdk8339414-fix_8202369_backport.patch

64 lines
2.2 KiB
Diff

commit 51b6307937d9584f8690e4916444e479eeafff28
Author: Thomas Fitzsimmons <fitzsim@redhat.com>
Date: Mon Jun 16 23:04:07 2025 +0000
8339414: Fix JDK-8202369 incorrect backport for 8u
Reviewed-by: andrew
diff --git a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
index e30851df576..8b2e3cdce93 100644
--- a/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
+++ b/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
@@ -332,37 +332,33 @@ Java_java_net_Inet4AddressImpl_getHostByAddr(JNIEnv *env, jobject this,
*/
JNIEXPORT jstring JNICALL
Java_java_net_Inet4AddressImpl_getLocalHostName(JNIEnv *env, jobject this) {
- char hostname[NI_MAXHOST+1];
+ char hostname[NI_MAXHOST + 1];
hostname[0] = '\0';
if (JVM_GetHostName(hostname, sizeof(hostname))) {
- /* Something went wrong, maybe networking is not setup? */
strcpy(hostname, "localhost");
} else {
+#if defined(__solaris__)
+ // try to resolve hostname via nameservice
+ // if it is known but getnameinfo fails, hostname will still be the
+ // value from gethostname
struct addrinfo hints, *res;
- int error;
+ // make sure string is null-terminated
hostname[NI_MAXHOST] = '\0';
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_CANONNAME;
hints.ai_family = AF_INET;
- error = getaddrinfo(hostname, NULL, &hints, &res);
-
- if (error == 0) {/* host is known to name service */
- getnameinfo(res->ai_addr,
- res->ai_addrlen,
- hostname,
- NI_MAXHOST,
- NULL,
- 0,
- NI_NAMEREQD);
-
- /* if getnameinfo fails hostname is still the value
- from gethostname */
-
+ if (getaddrinfo(hostname, NULL, &hints, &res) == 0) {
+ getnameinfo(res->ai_addr, res->ai_addrlen, hostname, NI_MAXHOST,
+ NULL, 0, NI_NAMEREQD);
freeaddrinfo(res);
}
+#else
+ // make sure string is null-terminated
+ hostname[NI_MAXHOST] = '\0';
+#endif
}
return (*env)->NewStringUTF(env, hostname);
}