mirror of
https://github.com/AdguardTeam/AdGuardHome.git
synced 2024-12-14 18:51:34 +03:00
355cec1d7b
Squashed commit of the following:
commit 6e0e61ec2e95a563b04a622f46c6bbe2b2e12711
Merge: e3cccc01a 5b5b39713
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 20:51:29 2024 +0300
Merge branch 'master' into AG-32257-file-permission-mitigation
commit e3cccc01a9cbd382cec0fcd7f3685e43acb48424
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 19:57:32 2024 +0300
dnsforward: imp test
commit 16ecebbc2fd2f4afe2bf475774af1786fa7a02c0
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 19:22:10 2024 +0300
configmigrate: imp tests
commit da8777c3a7c81e17c0d08cfff4e3a9c8d2bbd649
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 18:58:46 2024 +0300
all: imp types, tests
commit 58822a0ef8aa2d944a667d1ba77fe23ff52af424
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 18:28:37 2024 +0300
all: imp chlog
commit 8ce81f918cc5cf43972e2045532a48c829257a2f
Author: Ainar Garipov <A.Garipov@AdGuard.COM>
Date: Wed Oct 2 18:09:57 2024 +0300
all: improve permissions, add safe_fs_patterns
38 lines
796 B
Go
38 lines
796 B
Go
package filtering
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
)
|
|
|
|
// pathMatchesAny returns true if filePath matches one of globs. globs must be
|
|
// valid. filePath must be absolute and clean. If globs are empty,
|
|
// pathMatchesAny returns false.
|
|
//
|
|
// TODO(a.garipov): Move to golibs?
|
|
func pathMatchesAny(globs []string, filePath string) (ok bool) {
|
|
if len(globs) == 0 {
|
|
return false
|
|
}
|
|
|
|
clean, err := filepath.Abs(filePath)
|
|
if err != nil {
|
|
panic(fmt.Errorf("pathMatchesAny: %w", err))
|
|
} else if clean != filePath {
|
|
panic(fmt.Errorf("pathMatchesAny: filepath %q is not absolute", filePath))
|
|
}
|
|
|
|
for _, g := range globs {
|
|
ok, err = filepath.Match(g, filePath)
|
|
if err != nil {
|
|
panic(fmt.Errorf("pathMatchesAny: bad pattern: %w", err))
|
|
}
|
|
|
|
if ok {
|
|
return true
|
|
}
|
|
}
|
|
|
|
return false
|
|
}
|