Skip to content

Commit 5877dfa

Browse files
committed
Add length-limiting to regex replace filter
1 parent 61acbfb commit 5877dfa

3 files changed

Lines changed: 13 additions & 2 deletions

File tree

src/main/java/com/hubspot/jinjava/JinjavaConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ public boolean isValidationMode() {
246246
}
247247

248248
public long getMaxStringLength() {
249-
return maxStringLength;
249+
return maxStringLength == 0 ? getMaxOutputSize() : maxStringLength;
250250
}
251251

252252
public InterpreterFactory getInterpreterFactory() {

src/main/java/com/hubspot/jinjava/interpret/InvalidReason.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@ public enum InvalidReason {
1717
"with value '%s' must be a valid attribute of every item in the list"
1818
),
1919
ENUM("with value '%s' must be one of: %s"),
20-
CIDR("with value '%s' must be a valid CIDR address");
20+
CIDR("with value '%s' must be a valid CIDR address"),
21+
LENGTH("with length '%s' exceeds maximum allowed length of");
2122

2223
private final String errorMessage;
2324

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ public Object filter(Object var, JinjavaInterpreter interpreter, String... args)
7171

7272
if (var instanceof String) {
7373
String s = (String) var;
74+
long maxStringLength = interpreter.getConfig().getMaxStringLength();
75+
if (maxStringLength > 0 && s.length() > maxStringLength) {
76+
throw new InvalidInputException(
77+
interpreter,
78+
this,
79+
InvalidReason.LENGTH,
80+
s.length(),
81+
maxStringLength
82+
);
83+
}
7484
String toReplace = args[0];
7585
String replaceWith = args[1];
7686

0 commit comments

Comments
 (0)