Fix string handling to avoid exceptions when doing path extraction
Issue: SPR-15259
This commit is contained in:
@@ -232,7 +232,7 @@ public class PathPattern implements Comparable<PathPattern> {
|
||||
while (separatorCount > 0 && pos < len) {
|
||||
if (path.charAt(pos++) == separator) {
|
||||
// Skip any adjacent separators
|
||||
while (path.charAt(pos) == separator) {
|
||||
while (pos < len && path.charAt(pos) == separator) {
|
||||
pos++;
|
||||
}
|
||||
separatorCount--;
|
||||
@@ -240,7 +240,7 @@ public class PathPattern implements Comparable<PathPattern> {
|
||||
}
|
||||
int end = len;
|
||||
// Trim trailing separators
|
||||
while (path.charAt(end - 1) == separator) {
|
||||
while (end > 0 && path.charAt(end - 1) == separator) {
|
||||
end--;
|
||||
}
|
||||
// Check if multiple separators embedded in the resulting path, if so trim them out.
|
||||
|
||||
@@ -467,6 +467,14 @@ public class PathPatternMatcherTests {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extractPathWithinPattern_spr15259() {
|
||||
checkExtractPathWithinPattern("/**","/","");
|
||||
checkExtractPathWithinPattern("/**","//","");
|
||||
checkExtractPathWithinPattern("/**","","");
|
||||
checkExtractPathWithinPattern("/**","/foobar","foobar");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void extractPathWithinPattern() throws Exception {
|
||||
checkExtractPathWithinPattern("/welcome*/", "/welcome/", "welcome");
|
||||
|
||||
Reference in New Issue
Block a user