Fix Abs path validation on Windows (#124084)

* Windows: Consider slash-prefixed paths as absolute

filepath.IsAbs does not consider "/" or "\" as absolute paths, even
though files can be addressed as such. [1][2]

Currently, there are some unit tests that are failing on Windows due to
this reason.

[1] https://learn.microsoft.com/en-us/dotnet/standard/io/file-path-formats#traditional-dos-paths
[2] https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#fully-qualified-vs-relative-paths

* Add test to verify IsAbs for windows

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>

* Fix abs path validation on windows

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>

* Skipp path clean check for podLogDir on windows

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>

* Implement IsPathClean to validate path

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>

* Add warn comment for IsAbs

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>

---------

Signed-off-by: Maksym Pavlenko <pavlenko.maksym@gmail.com>
Co-authored-by: Claudiu Belu <cbelu@cloudbasesolutions.com>
This commit is contained in:
Maksym Pavlenko
2024-04-10 10:13:59 -07:00
committed by GitHub
parent 9791f0d1f3
commit be4b7176dc
8 changed files with 108 additions and 7 deletions

View File

@@ -89,3 +89,12 @@ func TestPendingUnixDomainSocket(t *testing.T) {
wg.Wait()
unixln.Close()
}
func TestAbsWithSlash(t *testing.T) {
// On Windows, filepath.IsAbs will not return True for paths prefixed with a slash
assert.True(t, IsAbs("/test"))
assert.True(t, IsAbs("\\test"))
assert.False(t, IsAbs("./local"))
assert.False(t, IsAbs("local"))
}