handle edge cases

This commit is contained in:
Scott McKendry
2026-07-30 07:20:51 +12:00
parent c5bccd0b7b
commit 3390debab7
2 changed files with 27 additions and 2 deletions
+7 -2
View File
@@ -182,7 +182,7 @@ type AuthEnabledRule struct {
}
func matchPathRule(paths, path string) (bool, error) {
paths = strings.TrimSpace(paths)
paths = strings.TrimRight(strings.TrimSpace(paths), ",")
if paths == "/" {
return true, nil
@@ -198,7 +198,12 @@ func matchPathRule(paths, path string) (bool, error) {
}
for _, configuredPath := range strings.Split(paths, ",") {
if strings.HasPrefix(path, strings.TrimSpace(configuredPath)) {
configuredPath = strings.TrimSpace(configuredPath)
if configuredPath == "" {
continue
}
if strings.HasPrefix(path, configuredPath) {
return true, nil
}
}
@@ -546,6 +546,16 @@ func TestAuthEnabledRule(t *testing.T) {
},
expected: EffectAllow,
},
{
name: "allows when comma-separated allow paths have trailing whitespace and commas",
ctx: &ACLContext{
ACLs: &model.App{
Path: model.AppPath{Allow: " /bar,/foo/bar,/hello, , "},
},
Path: "/foo/bar/baz",
},
expected: EffectAllow,
},
{
name: "allows when path matches allow regex",
ctx: &ACLContext{
@@ -566,6 +576,16 @@ func TestAuthEnabledRule(t *testing.T) {
},
expected: EffectDeny,
},
{
name: "denies when allow paths contain only whitespace and commas",
ctx: &ACLContext{
ACLs: &model.App{
Path: model.AppPath{Allow: " , , "},
},
Path: "/anything",
},
expected: EffectDeny,
},
{
name: "denies when path does not match allow path",
ctx: &ACLContext{