apache / apache/maven-filtering
Broken Windows path regex in FilteringUtils.getRelativeFilePath()
- Dominant language
- Java
- Stars
- 9
- Forks
- 36
- Avg merge
- 8h 47m
- Merged PRs (30d)
- 4
Description
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.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start in src/main/java/org/apache/maven/shared/filtering/FilteringUtils.java at getRelativeFilePath(), especially lines 184 and 187, and trace the handling of a Windows-style /C:/foo path. Correct the two checks so the leading slash is removed, then verify the relevant path-normalization behavior with the existing tests.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- build-system
- Issue type
- Bug
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 70/100