Skip to content

Commit 27ea0d5

Browse files
Merge pull request #275 from AikidoSec/java-normalize-hostname-to-lowercase
Java normalize hostname to lowercase
2 parents c4f4553 + b89edee commit 27ea0d5

2 files changed

Lines changed: 28 additions & 2 deletions

File tree

agent_api/src/main/java/dev/aikido/agent_api/storage/Hostnames.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,11 @@ protected boolean removeEldestEntry(Map.Entry<String, HostnameEntry> eldest) {
1616
}
1717

1818
public void add(String hostname, int port) {
19-
String key = getKey(hostname, port);
19+
if (hostname == null) return;
20+
String normalizedHostname = hostname.toLowerCase();
21+
String key = getKey(normalizedHostname, port);
2022
if (!map.containsKey(key)) {
21-
map.put(key, new HostnameEntry(hostname, port));
23+
map.put(key, new HostnameEntry(normalizedHostname, port));
2224
}
2325
map.get(key).incrementHits();
2426
}

agent_api/src/test/java/storage/HostnamesTest.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,30 @@ public void testExceedMaxEntriesWithMultiplePorts() {
106106
assertTrue(containsEntry(entries, "newsite.com", 3000));
107107
}
108108

109+
@Test
110+
public void testAddNullHostnameIsIgnored() {
111+
hostnames.add(null, 80);
112+
assertEquals(0, hostnames.asArray().length);
113+
}
114+
115+
@Test
116+
public void testAddUppercaseHostnameIsLowercased() {
117+
hostnames.add("EXAMPLE.COM", 80);
118+
Hostnames.HostnameEntry[] entries = hostnames.asArray();
119+
assertEquals(1, entries.length);
120+
assertEquals("example.com", entries[0].getHostname());
121+
}
122+
123+
@Test
124+
public void testMixedCaseAndLowercaseSameEntryDeduplication() {
125+
hostnames.add("Example.COM", 80);
126+
hostnames.add("example.com", 80);
127+
Hostnames.HostnameEntry[] entries = hostnames.asArray();
128+
assertEquals(1, entries.length);
129+
assertEquals("example.com", entries[0].getHostname());
130+
assertEquals(2, entries[0].getHits());
131+
}
132+
109133
private boolean containsEntry(Hostnames.HostnameEntry[] entries, String hostname, int port) {
110134
for (Hostnames.HostnameEntry entry : entries) {
111135
if (entry.getHostname().equals(hostname) && entry.getPort() == port) {

0 commit comments

Comments
 (0)