From ca38a355d220fb24bc4cdc52f8f66a5445884701 Mon Sep 17 00:00:00 2001 From: DingDongSoLong4 <99329275+DingDongSoLong4@users.noreply.github.com> Date: Mon, 13 Feb 2023 01:48:10 +0200 Subject: [PATCH] Add regex validation (#3424) --- internal/api/resolver_mutation_configure.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/internal/api/resolver_mutation_configure.go b/internal/api/resolver_mutation_configure.go index 29dec27e0..db7bc8995 100644 --- a/internal/api/resolver_mutation_configure.go +++ b/internal/api/resolver_mutation_configure.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "path/filepath" + "regexp" "github.com/stashapp/stash/internal/manager" "github.com/stashapp/stash/internal/manager/config" @@ -227,10 +228,22 @@ func (r *mutationResolver) ConfigureGeneral(ctx context.Context, input ConfigGen } if input.Excludes != nil { + for _, r := range input.Excludes { + _, err := regexp.Compile(r) + if err != nil { + return makeConfigGeneralResult(), fmt.Errorf("video exclusion pattern '%v' invalid: %w", r, err) + } + } c.Set(config.Exclude, input.Excludes) } if input.ImageExcludes != nil { + for _, r := range input.ImageExcludes { + _, err := regexp.Compile(r) + if err != nil { + return makeConfigGeneralResult(), fmt.Errorf("image/gallery exclusion pattern '%v' invalid: %w", r, err) + } + } c.Set(config.ImageExclude, input.ImageExcludes) } @@ -464,6 +477,12 @@ func (r *mutationResolver) ConfigureScraping(ctx context.Context, input ConfigSc } if input.ExcludeTagPatterns != nil { + for _, r := range input.ExcludeTagPatterns { + _, err := regexp.Compile(r) + if err != nil { + return makeConfigScrapingResult(), fmt.Errorf("tag exclusion pattern '%v' invalid: %w", r, err) + } + } c.Set(config.ScraperExcludeTagPatterns, input.ExcludeTagPatterns) }