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) { func matchPathRule(paths, path string) (bool, error) {
paths = strings.TrimSpace(paths) paths = strings.TrimRight(strings.TrimSpace(paths), ",")
if paths == "/" { if paths == "/" {
return true, nil return true, nil
@@ -198,7 +198,12 @@ func matchPathRule(paths, path string) (bool, error) {
} }
for _, configuredPath := range strings.Split(paths, ",") { 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 return true, nil
} }
} }
@@ -546,6 +546,16 @@ func TestAuthEnabledRule(t *testing.T) {
}, },
expected: EffectAllow, 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", name: "allows when path matches allow regex",
ctx: &ACLContext{ ctx: &ACLContext{
@@ -566,6 +576,16 @@ func TestAuthEnabledRule(t *testing.T) {
}, },
expected: EffectDeny, 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", name: "denies when path does not match allow path",
ctx: &ACLContext{ ctx: &ACLContext{