From b89edee7dd75d19f0bd44d7abab22e805d01a5d5 Mon Sep 17 00:00:00 2001 From: BitterPanda Date: Mon, 16 Mar 2026 13:59:32 +0100 Subject: [PATCH] Java normalize hostname to lowercase --- .../aikido/agent_api/storage/Hostnames.java | 6 +++-- .../src/test/java/storage/HostnamesTest.java | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/agent_api/src/main/java/dev/aikido/agent_api/storage/Hostnames.java b/agent_api/src/main/java/dev/aikido/agent_api/storage/Hostnames.java index 43c981f87..38772fdd6 100644 --- a/agent_api/src/main/java/dev/aikido/agent_api/storage/Hostnames.java +++ b/agent_api/src/main/java/dev/aikido/agent_api/storage/Hostnames.java @@ -16,9 +16,11 @@ protected boolean removeEldestEntry(Map.Entry eldest) { } public void add(String hostname, int port) { - String key = getKey(hostname, port); + if (hostname == null) return; + String normalizedHostname = hostname.toLowerCase(); + String key = getKey(normalizedHostname, port); if (!map.containsKey(key)) { - map.put(key, new HostnameEntry(hostname, port)); + map.put(key, new HostnameEntry(normalizedHostname, port)); } map.get(key).incrementHits(); } diff --git a/agent_api/src/test/java/storage/HostnamesTest.java b/agent_api/src/test/java/storage/HostnamesTest.java index be40b6293..5e5926187 100644 --- a/agent_api/src/test/java/storage/HostnamesTest.java +++ b/agent_api/src/test/java/storage/HostnamesTest.java @@ -106,6 +106,30 @@ public void testExceedMaxEntriesWithMultiplePorts() { assertTrue(containsEntry(entries, "newsite.com", 3000)); } + @Test + public void testAddNullHostnameIsIgnored() { + hostnames.add(null, 80); + assertEquals(0, hostnames.asArray().length); + } + + @Test + public void testAddUppercaseHostnameIsLowercased() { + hostnames.add("EXAMPLE.COM", 80); + Hostnames.HostnameEntry[] entries = hostnames.asArray(); + assertEquals(1, entries.length); + assertEquals("example.com", entries[0].getHostname()); + } + + @Test + public void testMixedCaseAndLowercaseSameEntryDeduplication() { + hostnames.add("Example.COM", 80); + hostnames.add("example.com", 80); + Hostnames.HostnameEntry[] entries = hostnames.asArray(); + assertEquals(1, entries.length); + assertEquals("example.com", entries[0].getHostname()); + assertEquals(2, entries[0].getHits()); + } + private boolean containsEntry(Hostnames.HostnameEntry[] entries, String hostname, int port) { for (Hostnames.HostnameEntry entry : entries) { if (entry.getHostname().equals(hostname) && entry.getPort() == port) {