You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by we...@apache.org on 2026/10/23 21:35:00 UTC
(hadoop) branch trunk updated: HADOOP-20028. SecurityUtil.getByName rejects bracketed IPv6 literals when token service use_ip is false. (#8855)
This is an automated email from the ASF dual-hosted git repository.
jojochuang pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/hadoop.git
The following commit(s) were added to refs/heads/trunk by this push:
new 55263a72089 HADOOP-20028. SecurityUtil.getByName rejects bracketed IPv6 literals when token service use_ip is false. (#8855)
55263a72089 is described below
commit 55263a72089db66e8749989ce122066acce7d290
Author: Siyao Meng <50...@users.noreply.github.com>
AuthorDate: Fri Oct 23 14:34:53 2026 -0700
HADOOP-20028. SecurityUtil.getByName rejects bracketed IPv6 literals when token service use_ip is false. (#8855)
Generated-by: Claude Opus 5.5 <no...@anthropic.com>
---
.../java/org/apache/hadoop/security/SecurityUtil.java | 5 +++++
.../java/org/apache/hadoop/security/TestSecurityUtil.java | 15 +++++++++++++++
2 files changed, 20 insertions(+)
diff --git a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java
index 724e26c7335..bdcb5b93f25 100644
--- a/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java
+++ b/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/security/SecurityUtil.java
@@ -721,6 +721,11 @@ protected static class QualifiedHostResolver extends CacheableHostResolver {
public InetAddress resolve(String host) throws UnknownHostException {
InetAddress addr = null;
+ // URI.getHost() returns IPv6 literals in brackets, ex. "[::1]"
+ if (host.startsWith("[") && InetAddresses.isUriInetAddress(host)) {
+ host = host.substring(1, host.length() - 1);
+ }
+
if (InetAddresses.isInetAddress(host)) {
// valid ip address. use it as-is
addr = InetAddresses.forString(host);
diff --git a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
index bbea8285a5b..7007e84c6de 100644
--- a/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
+++ b/hadoop-common-project/hadoop-common/src/test/java/org/apache/hadoop/security/TestSecurityUtil.java
@@ -385,6 +385,21 @@ public void testSocketAddrWithIPv6() throws Exception {
verifyAddress(addr, host, InetAddress.getByName(host).getHostAddress(), 123);
}
+ @Test
+ public void testGetByNameWithBracketedIPv6() throws Exception {
+ Configuration conf = new Configuration(false);
+ for (boolean useIp : new boolean[] {false, true}) {
+ conf.setBoolean(CommonConfigurationKeys.HADOOP_SECURITY_TOKEN_SERVICE_USE_IP, useIp);
+ SecurityUtil.setConfiguration(conf);
+ String msg = "use_ip=" + useIp;
+ for (String ip : new String[] {"::1", "2001:db8::1"}) {
+ assertEquals(InetAddress.getByName(ip), SecurityUtil.getByName("[" + ip + "]"), msg);
+ }
+ // the JDK does not accept an IPv4 literal in brackets either
+ assertThrows(UnknownHostException.class, () -> SecurityUtil.getByName("[127.0.0.1]"), msg);
+ }
+ }
+
@Test
public void testSocketAddrWithNameToStaticName() {
String staticHost = "host1";
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org