Skip to content

Commit 1f5a103

Browse files
authored
Improve InetSocketAddress deserialization (#5951)
1 parent 2339bd4 commit 1f5a103

5 files changed

Lines changed: 18 additions & 4 deletions

File tree

‎release-notes/CREDITS-2.x‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1897,3 +1897,5 @@ Fawzi Essam (@iifawzi)
18971897
Omkhar Arasaratnam (@omkhar)
18981898
* Reported #5950: Improve `UUIDeserializer` error handling
18991899
(2.18.8)
1900+
* Reported #5951: Improve `InetSocketAddress` deserialization
1901+
(2.18.8)

‎release-notes/VERSION-2.x‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Project: jackson-databind
88

99
#5950: Improve `UUIDeserializer` error handling
1010
(reported by Omkhar A)
11+
#5951: Improve `InetSocketAddress` deserialization
12+
(reported by Omkhar A)
1113

1214
2.18.7 (24-Apr-2026)
1315
2.18.6 (22-Feb-2026)

‎src/main/java/com/fasterxml/jackson/databind/deser/std/FromStringDeserializer.java‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ private Locale _deSerializeBCP47Locale(String value, int ix, String first, Strin
488488
}
489489

490490
protected InetSocketAddress _inetSocketAddress(String host, int port) {
491-
return new InetSocketAddress(host, port);
491+
// 05-May-2026, tatu: [databind#5951] Prevent DNS lookup:
492+
return InetSocketAddress.createUnresolved(host, port);
492493
}
493494
}
494495

‎src/test/java/com/fasterxml/jackson/databind/deser/jdk/JDKStringLikeTypeDeserTest.java‎

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,15 @@ public void testInetAddress() throws IOException
184184
public void testInetSocketAddress() throws IOException
185185
{
186186
InetSocketAddress address = MAPPER.readValue(q("127.0.0.1"), InetSocketAddress.class);
187-
assertEquals("127.0.0.1", address.getAddress().getHostAddress());
187+
assertEquals("127.0.0.1", address.getHostName());
188188

189189
InetSocketAddress ip6 = MAPPER.readValue(
190190
q("2001:db8:85a3:8d3:1319:8a2e:370:7348"), InetSocketAddress.class);
191-
assertEquals("2001:db8:85a3:8d3:1319:8a2e:370:7348", ip6.getAddress().getHostAddress());
191+
assertEquals("2001:db8:85a3:8d3:1319:8a2e:370:7348", ip6.getHostName());
192192

193193
InetSocketAddress ip6port = MAPPER.readValue(
194194
q("[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443"), InetSocketAddress.class);
195-
assertEquals("2001:db8:85a3:8d3:1319:8a2e:370:7348", ip6port.getAddress().getHostAddress());
195+
assertEquals("[2001:db8:85a3:8d3:1319:8a2e:370:7348]", ip6port.getHostName());
196196
assertEquals(443, ip6port.getPort());
197197

198198
// should we try resolving host names? That requires connectivity...
@@ -204,6 +204,11 @@ public void testInetSocketAddress() throws IOException
204204
address = MAPPER.readValue(q(HOST_AND_PORT), InetSocketAddress.class);
205205
assertEquals(HOST, address.getHostName());
206206
assertEquals(80, address.getPort());
207+
208+
// [databind#5951]: should NOT resolve address
209+
address = MAPPER.readValue(q("localhost:9999"), InetSocketAddress.class);
210+
assertTrue(address.isUnresolved(),
211+
"`InetSocketAddress` resolved localhost during deserialization: "+ address);
207212
}
208213

209214
@Test

‎src/test/java/com/fasterxml/jackson/databind/ser/jdk/JDKTypeSerializationTest.java‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,12 @@ public void testInetSocketAddress() throws IOException
125125
{
126126
assertEquals(q("127.0.0.1:8080"),
127127
MAPPER.writeValueAsString(new InetSocketAddress("127.0.0.1", 8080)));
128+
assertEquals(q("127.0.0.1:8080"),
129+
MAPPER.writeValueAsString(InetSocketAddress.createUnresolved("127.0.0.1", 8080)));
128130
assertEquals(q("google.com:6667"),
129131
MAPPER.writeValueAsString(new InetSocketAddress("google.com", 6667)));
132+
assertEquals(q("google.com:6667"),
133+
MAPPER.writeValueAsString(InetSocketAddress.createUnresolved("google.com", 6667)));
130134
assertEquals(q("[2001:db8:85a3:8d3:1319:8a2e:370:7348]:443"),
131135
MAPPER.writeValueAsString(new InetSocketAddress("2001:db8:85a3:8d3:1319:8a2e:370:7348", 443)));
132136
}

0 commit comments

Comments
 (0)