From 012c56a1f071d4ce14b78ce73f287cfb4582b624 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Thu, 16 Mar 2017 18:55:49 +0100 Subject: [PATCH] Avoid pattern misdetection in Tomcat "war:" URL separator Issue: SPR-15332 --- .../io/support/PathMatchingResourcePatternResolver.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java index 753f387f6a..fcc4cfe41f 100644 --- a/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java +++ b/spring-core/src/main/java/org/springframework/core/io/support/PathMatchingResourcePatternResolver.java @@ -284,9 +284,10 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol } } else { - // Only look for a pattern after a prefix here - // (to not get fooled by a pattern symbol in a strange prefix). - int prefixEnd = locationPattern.indexOf(":") + 1; + // Generally only look for a pattern after a prefix here, + // and on Tomcat only after the "*/" separator for its "war:" protocol. + int prefixEnd = (locationPattern.startsWith("war:") ? locationPattern.indexOf("*/") + 1 : + locationPattern.indexOf(":") + 1); if (getPathMatcher().isPattern(locationPattern.substring(prefixEnd))) { // a file pattern return findPathMatchingResources(locationPattern);