From 2abc72018dc935649205a1c2f6c1db31f265b7b0 Mon Sep 17 00:00:00 2001 From: bjhulst <30053806+bjhulst@users.noreply.github.com> Date: Sat, 3 Oct 2020 11:20:21 +0300 Subject: [PATCH] Bug 231 (#312) * Update filter.go * Upsert filter options Insert or update filter options. * Indent. * Updated CHANGELOG.md fix for: Option -ac overwriting other existing filters #231 --- CHANGELOG.md | 1 + pkg/filter/filter.go | 20 +++++++++++++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 780a159..a9157fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ - Pre-flight errors are now displayed also after the usage text to prevent the need to scroll through backlog. - Cancelling via SIGINT (Ctrl-C) is now more responsive - Fixed issue where a thread would hang due to TCP errors + - Fixed the issue where the option -ac was overwriting existing filters. Now auto-calibration will add them where needed. - The `-w` flag now accepts comma delimited values in the form of `file1:W1,file2:W2`. - v1.1.0 diff --git a/pkg/filter/filter.go b/pkg/filter/filter.go index e4570aa..8f266b4 100644 --- a/pkg/filter/filter.go +++ b/pkg/filter/filter.go @@ -30,11 +30,21 @@ func NewFilterByName(name string, value string) (ffuf.FilterProvider, error) { //AddFilter adds a new filter to Config func AddFilter(conf *ffuf.Config, name string, option string) error { - newf, err := NewFilterByName(name, option) - if err == nil { - conf.Filters[name] = newf - } - return err + newf, err := NewFilterByName(name, option) + if err == nil { + // valid filter create or append + if conf.Filters[name] == nil { + conf.Filters[name] = newf + } else { + currentfilter := conf.Filters[name].Repr() + newoption := strings.TrimSpace(strings.Split(currentfilter, ":")[1]) + "," + option + newerf, err := NewFilterByName(name, newoption) + if err == nil { + conf.Filters[name] = newerf + } + } + } + return err } //AddMatcher adds a new matcher to Config