summaryrefslogtreecommitdiff
path: root/pkg
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 /pkg
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>
Diffstat (limited to 'pkg')
-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
}