summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAditya Rajan <arajan@redhat.com>2021-11-19 13:35:32 +0530
committerAditya Rajan <arajan@redhat.com>2021-11-19 22:07:47 +0530
commit6011149cae81a43e0d9c8fefc7413a61ae4f7eac (patch)
tree46c7c7f032fcb92797a873f713a805225da841ea
parent671e5ee42d4eb71fc0238e8b0b1e4a68b1def156 (diff)
downloadpodman-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.go23
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
}