Skip to content

Commit fb9965d

Browse files
Pattern Replacement Utility #494
Updating regex use to only inspect group 0 of matcher. Extending tests to include single line with multiple entries.
1 parent ea47c3e commit fb9965d

File tree

2 files changed

+16
-4
lines changed

2 files changed

+16
-4
lines changed

src/main/java/org/owasp/esapi/codecs/ref/EncodingPatternPreservation.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,11 @@ public String captureAndReplaceMatches(String input) {
5858
Matcher matcher = noEncodeContent.matcher(input);
5959

6060
while (matcher.find()) {
61-
int groups = matcher.groupCount();
62-
for (int x = 0; x < groups; x++) {
63-
String replaceContent = matcher.group(x);
61+
String replaceContent = matcher.group(0);
62+
if (replaceContent != null) {
6463
replacedContentList.add(replaceContent);
6564
inputCpy = inputCpy.replaceFirst(noEncodeContent.pattern(), replacementMarker);
66-
}
65+
}
6766
}
6867

6968
return inputCpy;

src/test/java/org/owasp/esapi/codecs/ref/EncodingPatternPreservationTest.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@ public void testReplaceAndRestore() {
2121
assertEquals(origStr, restored);
2222
}
2323

24+
@Test
25+
public void testReplaceMultipleAndRestore() {
26+
Pattern numberRegex = Pattern.compile("(ABC)");
27+
EncodingPatternPreservation epp = new EncodingPatternPreservation(numberRegex);
28+
String origStr = "12 ABC 34 ABC 56 G 7 ABC8";
29+
String replacedStr = epp.captureAndReplaceMatches(origStr);
30+
31+
assertEquals("12 EncodingPatternPreservation 34 EncodingPatternPreservation 56 G 7 EncodingPatternPreservation8", replacedStr);
32+
33+
String restored = epp.restoreOriginalContent(replacedStr);
34+
assertEquals(origStr, restored);
35+
}
36+
2437
@Test
2538
public void testSetMarker() {
2639
Pattern numberRegex = Pattern.compile("(ABC)");

0 commit comments

Comments
 (0)