diff options
| author | Aleksandr Nogikh <nogikh@google.com> | 2025-08-11 16:25:44 +0200 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2025-08-12 13:49:42 +0000 |
| commit | 6c0b41a01e303797e859c01e425dc47aafe4cf45 (patch) | |
| tree | 7b0fc00730d66758aa799e7aa56f0145b0c922f5 /syz-cluster | |
| parent | ada7557073de86aa26dc6304bceeae76f212486a (diff) | |
syz-cluster: refactor fuzz config structures
Keep the fuzz-step parameters in a separate structure to minimize the
field duplication.
It will also facilitate the reuse of the same syzkaller config in
several fuzzing configurations.
Diffstat (limited to 'syz-cluster')
| -rw-r--r-- | syz-cluster/pkg/api/api.go | 51 | ||||
| -rw-r--r-- | syz-cluster/pkg/api/client.go | 4 | ||||
| -rw-r--r-- | syz-cluster/pkg/triage/fuzz_config.go | 2 | ||||
| -rw-r--r-- | syz-cluster/pkg/triage/fuzz_config_test.go | 10 | ||||
| -rw-r--r-- | syz-cluster/workflow/triage-step/main.go | 7 |
5 files changed, 44 insertions, 30 deletions
diff --git a/syz-cluster/pkg/api/api.go b/syz-cluster/pkg/api/api.go index decbc9611..5976db71d 100644 --- a/syz-cluster/pkg/api/api.go +++ b/syz-cluster/pkg/api/api.go @@ -15,10 +15,15 @@ type TriageResult struct { // The data layout faclitates the simplicity of the workflow definition. type FuzzTask struct { - Base BuildRequest `json:"base"` - Patched BuildRequest `json:"patched"` - Config string `json:"config"` // Refers to workflow/configs/{}. - CorpusURL string `json:"corpus_url"` + Base BuildRequest `json:"base"` + Patched BuildRequest `json:"patched"` + FuzzConfig +} + +// FuzzConfig represents a set of parameters passed to the fuzz step. +type FuzzConfig struct { + Config string `json:"config"` // Refers to workflow/configs/{}. + CorpusURL string `json:"corpus_url"` } // The triage step of the workflow will request these from controller. @@ -29,11 +34,11 @@ type Tree struct { EmailLists []string `json:"email_lists"` } -type FuzzConfig struct { - Name string `json:"name"` // Primary key. +// TriageFuzzConfig is a single record in the list of supported fuzz configs. +type TriageFuzzConfig struct { EmailLists []string `json:"email_lists"` KernelConfig string `json:"kernel_config"` - CorpusURL string `json:"corpus_url"` + FuzzConfig } type BuildRequest struct { @@ -208,39 +213,49 @@ const ( ) // The list is ordered by decreasing importance. -var FuzzConfigs = []*FuzzConfig{ +var FuzzConfigs = []*TriageFuzzConfig{ { - Name: `kvm`, EmailLists: []string{`kvm@vger.kernel.org`}, KernelConfig: `upstream-apparmor-kasan.config`, - CorpusURL: allCorpusURL, + FuzzConfig: FuzzConfig{ + Config: `kvm`, + CorpusURL: allCorpusURL, + }, }, { - Name: `io-uring`, EmailLists: []string{`io-uring@vger.kernel.org`}, KernelConfig: `upstream-apparmor-kasan.config`, - CorpusURL: allCorpusURL, + FuzzConfig: FuzzConfig{ + Config: `io-uring`, + CorpusURL: allCorpusURL, + }, }, { - Name: `bpf`, EmailLists: []string{`bpf@vger.kernel.org`}, KernelConfig: `upstream-apparmor-kasan.config`, - CorpusURL: bpfCorpusURL, + FuzzConfig: FuzzConfig{ + Config: `bpf`, + CorpusURL: bpfCorpusURL, + }, }, { - Name: `net`, EmailLists: []string{ `netdev@vger.kernel.org`, `netfilter-devel@vger.kernel.org`, `linux-wireless@vger.kernel.org`, }, KernelConfig: `upstream-apparmor-kasan.config`, - CorpusURL: netCorpusURL, + FuzzConfig: FuzzConfig{ + Config: `net`, + CorpusURL: netCorpusURL, + }, }, { - Name: `all`, EmailLists: nil, // A fallback option. KernelConfig: `upstream-apparmor-kasan.config`, - CorpusURL: allCorpusURL, + FuzzConfig: FuzzConfig{ + Config: `all`, + CorpusURL: allCorpusURL, + }, }, } diff --git a/syz-cluster/pkg/api/client.go b/syz-cluster/pkg/api/client.go index 7186e6571..1b571c628 100644 --- a/syz-cluster/pkg/api/client.go +++ b/syz-cluster/pkg/api/client.go @@ -41,8 +41,8 @@ func (client Client) UploadTriageResult(ctx context.Context, sessionID string, r } type TreesResp struct { - Trees []*Tree `json:"trees"` - FuzzConfigs []*FuzzConfig `json:"fuzz_configs"` + Trees []*Tree `json:"trees"` + FuzzConfigs []*TriageFuzzConfig `json:"fuzz_configs"` } func (client Client) GetTrees(ctx context.Context) (*TreesResp, error) { diff --git a/syz-cluster/pkg/triage/fuzz_config.go b/syz-cluster/pkg/triage/fuzz_config.go index fbe576162..05443d704 100644 --- a/syz-cluster/pkg/triage/fuzz_config.go +++ b/syz-cluster/pkg/triage/fuzz_config.go @@ -9,7 +9,7 @@ import ( "github.com/google/syzkaller/syz-cluster/pkg/api" ) -func SelectFuzzConfig(series *api.Series, fuzzConfigs []*api.FuzzConfig) *api.FuzzConfig { +func SelectFuzzConfig(series *api.Series, fuzzConfigs []*api.TriageFuzzConfig) *api.TriageFuzzConfig { seriesCc := map[string]bool{} for _, cc := range series.Cc { seriesCc[strings.ToLower(cc)] = true diff --git a/syz-cluster/pkg/triage/fuzz_config_test.go b/syz-cluster/pkg/triage/fuzz_config_test.go index 7a58cf464..04f948493 100644 --- a/syz-cluster/pkg/triage/fuzz_config_test.go +++ b/syz-cluster/pkg/triage/fuzz_config_test.go @@ -11,18 +11,18 @@ import ( ) func TestSelectFuzzConfig(t *testing.T) { - configs := []*api.FuzzConfig{ + configs := []*api.TriageFuzzConfig{ { - Name: "bpf", EmailLists: []string{"bpf@list"}, + FuzzConfig: api.FuzzConfig{Config: "bpf"}, }, { - Name: "net", EmailLists: []string{"net@list"}, + FuzzConfig: api.FuzzConfig{Config: "net"}, }, { - Name: "mainline", EmailLists: nil, + FuzzConfig: api.FuzzConfig{Config: "mainline"}, }, } tests := []struct { @@ -45,7 +45,7 @@ func TestSelectFuzzConfig(t *testing.T) { for _, test := range tests { t.Run(test.testName, func(t *testing.T) { ret := SelectFuzzConfig(test.series, configs) - assert.Equal(t, test.result, ret.Name) + assert.Equal(t, test.result, ret.Config) }) } } diff --git a/syz-cluster/workflow/triage-step/main.go b/syz-cluster/workflow/triage-step/main.go index 58464ad41..c0cfda3b4 100644 --- a/syz-cluster/workflow/triage-step/main.go +++ b/syz-cluster/workflow/triage-step/main.go @@ -119,10 +119,9 @@ func getVerdict(ctx context.Context, tracer debugtracer.DebugTracer, client *api } triageResult = &api.TriageResult{ Fuzz: &api.FuzzTask{ - Base: base, - Patched: base, - Config: fuzzConfig.Name, - CorpusURL: fuzzConfig.CorpusURL, + Base: base, + Patched: base, + FuzzConfig: fuzzConfig.FuzzConfig, }, } triageResult.Fuzz.Patched.SeriesID = series.ID |
