diff options
author | Aditya Rajan <arajan@redhat.com> | 2021-11-19 13:35:32 +0530 |
---|---|---|
committer | Aditya Rajan <arajan@redhat.com> | 2021-11-19 22:07:47 +0530 |
commit | 6011149cae81a43e0d9c8fefc7413a61ae4f7eac (patch) | |
tree | 46c7c7f032fcb92797a873f713a805225da841ea | |
parent | 671e5ee42d4eb71fc0238e8b0b1e4a68b1def156 (diff) | |
download | podman-6011149cae81a43e0d9c8fefc7413a61ae4f7eac.tar.gz podman-6011149cae81a43e0d9c8fefc7413a61ae4f7eac.tar.bz2 podman-6011149cae81a43e0d9c8fefc7413a61ae4f7eac.zip |
filter: use filepath.Match to maintain consistency with other pattern
matching in podman
Following commit ensures that we maintain consistency with how pattern
matching is being carried out everywhere else in podman.
Switch from `regexp` to `filepath.Match`
For example https://github.com/containers/common/blob/main/libimage/filters.go#L162
[NO NEW TESTS NEEDED]
Signed-off-by: Aditya Rajan <arajan@redhat.com>
-rw-r--r-- | pkg/util/filters.go | 23 |
1 files changed, 6 insertions, 17 deletions
diff --git a/pkg/util/filters.go b/pkg/util/filters.go index 5af868873..99fac2478 100644 --- a/pkg/util/filters.go +++ b/pkg/util/filters.go @@ -4,7 +4,7 @@ import ( "encoding/json" "fmt" "net/http" - "regexp" + "path/filepath" "strings" "time" @@ -95,24 +95,13 @@ func PrepareFilters(r *http.Request) (*map[string][]string, error) { return &filterMap, nil } -func wildCardToRegexp(pattern string) string { - var result strings.Builder - for i, literal := range strings.Split(pattern, "*") { - // Replace * with .* - if i > 0 { - result.WriteString(".*") - } - // Quote any regular expression meta characters in the - // literal text. - result.WriteString(regexp.QuoteMeta(literal)) - } - return result.String() -} - func matchPattern(pattern string, value string) bool { if strings.Contains(pattern, "*") { - result, _ := regexp.MatchString(wildCardToRegexp(pattern), value) - return result + filter := fmt.Sprintf("*%s*", pattern) + filter = strings.ReplaceAll(filter, string(filepath.Separator), "|") + newName := strings.ReplaceAll(value, string(filepath.Separator), "|") + match, _ := filepath.Match(filter, newName) + return match } return false } |