In src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java, lines 184 and 187:
if (toPath.matches("^\\\\\\[a-zA-Z]:")) {
toPath = toPath.substring(1);
}
if (fromPath.matches("^\\\\\\[a-zA-Z]:")) {
fromPath = fromPath.substring(1);
}
The regex ^\\\\[a-zA-Z]: has a double-escaped backslash before the character class [a-zA-Z], making \\[ match a literal [ character at the start. The intended regex is ^[a-zA-Z]: — a drive letter followed by a colon at the start of the path. This regex will never match a Windows absolute path like C:\\foo, so the leading-slash stripping logic never executes. This is effectively dead code.
On Windows this could cause incorrect normalization of paths like /C:/foo where the leading / should be stripped.
In
src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java, lines 184 and 187:The regex
^\\\\[a-zA-Z]:has a double-escaped backslash before the character class[a-zA-Z], making\\[match a literal[character at the start. The intended regex is^[a-zA-Z]:— a drive letter followed by a colon at the start of the path. This regex will never match a Windows absolute path likeC:\\foo, so the leading-slash stripping logic never executes. This is effectively dead code.On Windows this could cause incorrect normalization of paths like
/C:/foowhere the leading/should be stripped.