Skip to content

Commit 0143716

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

File tree

2 files changed

+15
-5
lines changed

2 files changed

+15
-5
lines changed

Diff for: src/main/java/com/hubspot/jinjava/lib/filter/IpAddrFilter.java

+4-3
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('/');

Diff for: src/test/java/com/hubspot/jinjava/lib/filter/IpAddrFilterTest.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -209,12 +209,17 @@ 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+
);
213217
List<Object> invalidAddresses = Arrays.asList(
214218
"255.182.100.abc",
215219
"125.512.100.1",
216220
"125.512.100.1.1",
217221
"125.512.100",
222+
"192.168.1.1/33",
218223
104,
219224
"1200:0000:AB00:1234:0000:2552:7777:1313",
220225
"1200::AB00:1234::2552:7777:1313",
@@ -233,7 +238,10 @@ public void itFiltersValidIpv4Addresses() {
233238
public void itFiltersValidIpv6Addresses() {
234239
List<Object> validAddresses = Arrays.asList(
235240
"1200:0000:AB00:1234:0000:2552:7777:1313",
236-
"2000::"
241+
"2000::",
242+
"2000::/99",
243+
"1200:0000:AB00:1234:0000:2552:7777:1313/0000021",
244+
"1200:0000:AB00:1234:0000:2552:7777:1313/128"
237245
);
238246
List<Object> invalidAddresses = Arrays.asList(
239247
"255.182.100.abc",
@@ -243,6 +251,7 @@ public void itFiltersValidIpv6Addresses() {
243251
104,
244252
"1200:0000:AB00:1234:O000:2552:7777:1313",
245253
"1200::AB00:1234::2552:7777:1313:1232",
254+
"1200:0000:AB00:1234:0000:2552:7777:1313/132",
246255
"321",
247256
null,
248257
true

0 commit comments

Comments
 (0)