apache / apache/maven-filtering

Broken Windows path regex in FilteringUtils.getRelativeFilePath()

Open Beginner friendly
#352 0 comments 0 reactions 0 assignees View on GitHub
bug
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.