From 9a7db6675c25346ebebd0d47a263f34359cc5049 Mon Sep 17 00:00:00 2001 From: Lorenz Bausch Date: Fri, 20 May 2022 16:06:25 +0200 Subject: [PATCH] Restore: validate provided patterns --- cmd/restic/cmd_restore.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/cmd/restic/cmd_restore.go b/cmd/restic/cmd_restore.go index 3c7baeb0f..addd36661 100644 --- a/cmd/restic/cmd_restore.go +++ b/cmd/restic/cmd_restore.go @@ -70,6 +70,28 @@ func runRestore(opts RestoreOptions, gopts GlobalOptions, args []string) error { hasExcludes := len(opts.Exclude) > 0 || len(opts.InsensitiveExclude) > 0 hasIncludes := len(opts.Include) > 0 || len(opts.InsensitiveInclude) > 0 + // Validate provided patterns + if len(opts.Exclude) > 0 { + if valid, invalidPatterns := filter.ValidatePatterns(opts.Exclude); !valid { + return errors.Fatalf("--exclude: invalid pattern(s) provided:\n%s", strings.Join(invalidPatterns, "\n")) + } + } + if len(opts.InsensitiveExclude) > 0 { + if valid, invalidPatterns := filter.ValidatePatterns(opts.InsensitiveExclude); !valid { + return errors.Fatalf("--iexclude: invalid pattern(s) provided:\n%s", strings.Join(invalidPatterns, "\n")) + } + } + if len(opts.Include) > 0 { + if valid, invalidPatterns := filter.ValidatePatterns(opts.Include); !valid { + return errors.Fatalf("--include: invalid pattern(s) provided:\n%s", strings.Join(invalidPatterns, "\n")) + } + } + if len(opts.InsensitiveInclude) > 0 { + if valid, invalidPatterns := filter.ValidatePatterns(opts.InsensitiveInclude); !valid { + return errors.Fatalf("--iinclude: invalid pattern(s) provided:\n%s", strings.Join(invalidPatterns, "\n")) + } + } + for i, str := range opts.InsensitiveExclude { opts.InsensitiveExclude[i] = strings.ToLower(str) }