Skip to content

Commit cc852a0

Browse files
committed
Add a dot to the allowed jinjava packages to not allowlist packages with
prefix
1 parent ae26ce2 commit cc852a0

File tree

4 files changed

+20
-5
lines changed

4 files changed

+20
-5
lines changed

src/main/java/com/hubspot/jinjava/el/ext/AllowlistGroup.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ String[] allowedDeclaredMethodsFromClasses() {
143143
}
144144
},
145145
JinjavaFilters {
146-
private static final String[] ARRAY = { Filter.class.getPackageName() };
146+
private static final String[] ARRAY = { Filter.class.getPackageName() + '.' };
147147

148148
@Override
149149
String[] allowedDeclaredMethodsFromCanonicalClassPrefixes() {
@@ -169,7 +169,7 @@ String[] allowedReturnTypeClasses() {
169169
}
170170
},
171171
JinjavaExpTests {
172-
private static final String[] ARRAY = { ExpTest.class.getPackageName() };
172+
private static final String[] ARRAY = { ExpTest.class.getPackageName() + '.' };
173173

174174
@Override
175175
String[] allowedDeclaredMethodsFromCanonicalClassPrefixes() {

src/main/java/com/hubspot/jinjava/el/ext/BannedAllowlistOptions.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class BannedAllowlistOptions {
2525

2626
private static final Set<String> ALLOWED_JINJAVA_PREFIXES = Stream
2727
.concat(
28-
Stream.of("com.hubspot.jinjava.testobjects"),
28+
Stream.of("com.hubspot.jinjava.testobjects."),
2929
Arrays
3030
.stream(AllowlistGroup.values())
3131
.flatMap(g ->

src/test/java/com/hubspot/jinjava/BaseJinjavaTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public abstract class BaseJinjavaTest {
1414
.builder()
1515
.addDefaultAllowlistGroups()
1616
.addAllowedDeclaredMethodsFromCanonicalClassPrefixes(
17-
"com.hubspot.jinjava.testobjects"
17+
"com.hubspot.jinjava.testobjects."
1818
)
1919
.build()
2020
);
@@ -23,7 +23,7 @@ public abstract class BaseJinjavaTest {
2323
ReturnTypeValidatorConfig
2424
.builder()
2525
.addDefaultAllowlistGroups()
26-
.addAllowedCanonicalClassPrefixes("com.hubspot.jinjava.testobjects")
26+
.addAllowedCanonicalClassPrefixes("com.hubspot.jinjava.testobjects.")
2727
.build()
2828
);
2929
public Jinjava jinjava;

src/test/java/com/hubspot/jinjava/el/ext/ValidatorConfigBannedConstructsTest.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
import com.fasterxml.jackson.databind.ObjectMapper;
66
import com.hubspot.jinjava.interpret.JinjavaInterpreter;
7+
import com.hubspot.jinjava.lib.filter.Filter;
78
import java.lang.reflect.Method;
89
import org.junit.Test;
910

@@ -119,6 +120,20 @@ public void itRejectsJacksonDatabindPackageInAllowedDeclaredMethodPrefixes() {
119120
.hasMessageContaining("Banned classes or prefixes");
120121
}
121122

123+
@Test
124+
public void itRejectsEvilJinjavaFilterPathInAllowedDeclaredMethodPrefixes() {
125+
assertThatThrownBy(() ->
126+
MethodValidatorConfig
127+
.builder()
128+
.addAllowedDeclaredMethodsFromCanonicalClassPrefixes(
129+
Filter.class.getPackageName() + "_evil"
130+
)
131+
.build()
132+
)
133+
.isInstanceOf(IllegalStateException.class)
134+
.hasMessageContaining("Banned classes or prefixes");
135+
}
136+
122137
// ReturnTypeValidatorConfig: allowedCanonicalClassNames() path
123138

124139
@Test

0 commit comments

Comments
 (0)