Skip to content

Commit ea8814f

Browse files
committed
Added prefix validation to ipv4 and ipv6 filter
1 parent b29324f commit ea8814f

File tree

2 files changed

+16
-5
lines changed

2 files changed

+16
-5
lines changed

src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,14 @@
5454
)
5555
public class IpAddrFilter implements Filter {
5656
private static final Pattern IP4_PATTERN = Pattern.compile(
57-
"(([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.){3}([01]?\\d\\d?|2[0-4]\\d|25[0-5])"
57+
"((0*1?\\d\\d?|0*2[0-4]\\d|0*25[0-5])\\.){3}(0*1?\\d\\d?|0*2[0-4]\\d|0*25[0-5])(/0*([1-2]?\\d|3[0-2])?)?"
5858
);
5959
private static final Pattern IP6_PATTERN = Pattern.compile(
60-
"^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$"
60+
"^(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}(/0*(\\d{1,2}|1[0-1]\\d|12[0-8])?)?$"
6161
);
6262
private static final Pattern IP6_COMPRESSED_PATTERN = Pattern.compile(
63-
"^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)$"
63+
"^((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)::((?:[0-9A-Fa-f]{1,4}(?::[0-9A-Fa-f]{1,4})*)?)" +
64+
"(/0*(\\d{1,2}|1[0-1]\\d|12[0-8])?)?$"
6465
);
6566

6667
private static final Splitter PREFIX_SPLITTER = Splitter.on('/');

src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,18 @@ public void itAddsErrorOnInvalidFunctionName() {
209209

210210
@Test
211211
public void itFiltersValidIpv4Addresses() {
212-
List<Object> validAddresses = Arrays.asList("255.182.100.1", " 128.0.0.1 ");
212+
List<Object> validAddresses = Arrays.asList(
213+
"255.182.100.1",
214+
" 128.0.0.1 ",
215+
"192.168.1.0/000024",
216+
"0000192.0168.000000.1"
217+
);
213218
List<Object> invalidAddresses = Arrays.asList(
214219
"255.182.100.abc",
215220
"125.512.100.1",
216221
"125.512.100.1.1",
217222
"125.512.100",
223+
"192.168.1.1/33",
218224
104,
219225
"1200:0000:AB00:1234:0000:2552:7777:1313",
220226
"1200::AB00:1234::2552:7777:1313",
@@ -233,7 +239,10 @@ public void itFiltersValidIpv4Addresses() {
233239
public void itFiltersValidIpv6Addresses() {
234240
List<Object> validAddresses = Arrays.asList(
235241
"1200:0000:AB00:1234:0000:2552:7777:1313",
236-
"2000::"
242+
"2000::",
243+
"2000::/99",
244+
"1200:0000:AB00:1234:0000:2552:7777:1313/0000021",
245+
"1200:0000:AB00:1234:0000:2552:7777:1313/128"
237246
);
238247
List<Object> invalidAddresses = Arrays.asList(
239248
"255.182.100.abc",
@@ -243,6 +252,7 @@ public void itFiltersValidIpv6Addresses() {
243252
104,
244253
"1200:0000:AB00:1234:O000:2552:7777:1313",
245254
"1200::AB00:1234::2552:7777:1313:1232",
255+
"1200:0000:AB00:1234:0000:2552:7777:1313/132",
246256
"321",
247257
null,
248258
true

0 commit comments

Comments
 (0)