Browse Source

Fix string handling to avoid exceptions when doing path extraction

Issue: SPR-15259
pull/1329/head
Andy Clement 8 years ago
parent
commit
f98ea11e5e
  1. 4
      spring-web/src/main/java/org/springframework/web/util/patterns/PathPattern.java
  2. 8
      spring-web/src/test/java/org/springframework/web/util/patterns/PathPatternMatcherTests.java

4
spring-web/src/main/java/org/springframework/web/util/patterns/PathPattern.java

@ -232,7 +232,7 @@ public class PathPattern implements Comparable<PathPattern> { @@ -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> { @@ -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.

8
spring-web/src/test/java/org/springframework/web/util/patterns/PathPatternMatcherTests.java

@ -467,6 +467,14 @@ public class PathPatternMatcherTests { @@ -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");

Loading…
Cancel
Save