diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-08-08 11:56:26 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-08-08 14:06:39 +0000 |
| commit | 7d6784d60023abc670559bbb8c7eda32f6aed5aa (patch) | |
| tree | 60fbd64a7f1ea6ad6dd1fe0e0bde7bd17801331f /prog | |
| parent | ef148a2da4b0d19aa9b105fa713a374c9438080c (diff) | |
prog: don't minimize file names for corpus
We have too many corpus minimization executions and for corpus we are only
interested in reducing total number of args that will be considered for mutation.
So don't minimize file names.
Diffstat (limited to 'prog')
| -rw-r--r-- | prog/minimization.go | 3 | ||||
| -rw-r--r-- | prog/minimization_test.go | 37 |
2 files changed, 22 insertions, 18 deletions
diff --git a/prog/minimization.go b/prog/minimization.go index 4d943995d..8298ec812 100644 --- a/prog/minimization.go +++ b/prog/minimization.go @@ -399,6 +399,9 @@ func (typ *BufferType) minimize(ctx *minimizeArgsCtx, arg Arg, path string) bool return true } case BufferFilename: + if ctx.mode == MinimizeCorpus { + return false + } // Try to undo target.SpecialFileLenghts mutation // and reduce file name length. if !typ.Varlen() { diff --git a/prog/minimization_test.go b/prog/minimization_test.go index 37423f828..9fe822577 100644 --- a/prog/minimization_test.go +++ b/prog/minimization_test.go @@ -16,6 +16,7 @@ func TestMinimize(t *testing.T) { tests := []struct { os string arch string + mode MinimizeMode orig string callIndex int pred func(*Prog, int) bool @@ -24,7 +25,7 @@ func TestMinimize(t *testing.T) { }{ // Predicate always returns false, so must get the same program. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x3, 0x32, 0xffffffffffffffff, 0x0)\n" + "sched_yield()\n" + "pipe2(&(0x7f0000000000), 0x0)\n", @@ -45,7 +46,7 @@ func TestMinimize(t *testing.T) { }, // Remove a call. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x3, 0x32, 0xffffffffffffffff, 0x0)\n" + "sched_yield()\n" + "pipe2(&(0x7f0000000000)={0xffffffffffffffff, 0xffffffffffffffff}, 0x0)\n", @@ -60,7 +61,7 @@ func TestMinimize(t *testing.T) { }, // Remove two dependent calls. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x3, 0x32, 0xffffffffffffffff, 0x0)\n" + "pipe2(&(0x7f0000000000)={0x0, 0x0}, 0x0)\n" + "sched_yield()\n", @@ -80,7 +81,7 @@ func TestMinimize(t *testing.T) { }, // Remove a call and replace results. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x3, 0x32, 0xffffffffffffffff, 0x0)\n" + "pipe2(&(0x7f0000000000)={<r0=>0x0, 0x0}, 0x0)\n" + "write(r0, &(0x7f0000000000)=\"1155\", 0x2)\n" + @@ -96,7 +97,7 @@ func TestMinimize(t *testing.T) { }, // Remove a call and replace results. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x3, 0x32, 0xffffffffffffffff, 0x0)\n" + "r0=open(&(0x7f0000000000)=\"1155\", 0x0, 0x0)\n" + "write(r0, &(0x7f0000000000)=\"1155\", 0x2)\n" + @@ -112,7 +113,7 @@ func TestMinimize(t *testing.T) { }, // Minimize pointer. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(&(0x7f0000001000)={0xffffffffffffffff, 0xffffffffffffffff}, 0x0)\n", -1, func(p *Prog, callIndex int) bool { @@ -123,7 +124,7 @@ func TestMinimize(t *testing.T) { }, // Minimize pointee. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(&(0x7f0000001000)={0xffffffffffffffff, 0xffffffffffffffff}, 0x0)\n", -1, func(p *Prog, callIndex int) bool { @@ -134,7 +135,7 @@ func TestMinimize(t *testing.T) { }, // Make sure we don't hang when minimizing resources. { - "test", "64", + "test", "64", MinimizeCorpus, "r0 = test$res0()\n" + "test$res1(r0)\n", -1, @@ -146,7 +147,7 @@ func TestMinimize(t *testing.T) { -1, }, { - "test", "64", + "test", "64", MinimizeCorpus, "minimize$0(0x1, 0x1)\n", -1, func(p *Prog, callIndex int) bool { return len(p.Calls) == 1 }, @@ -155,7 +156,7 @@ func TestMinimize(t *testing.T) { }, // Clear unneeded fault injection. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (fail_nth: 5)\n", -1, func(p *Prog, callIndex int) bool { @@ -166,7 +167,7 @@ func TestMinimize(t *testing.T) { }, // Keep important fault injection. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (fail_nth: 5)\n", -1, func(p *Prog, callIndex int) bool { @@ -177,7 +178,7 @@ func TestMinimize(t *testing.T) { }, // Clear unneeded async flag. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (async)\n", -1, func(p *Prog, callIndex int) bool { @@ -188,7 +189,7 @@ func TestMinimize(t *testing.T) { }, // Keep important async flag. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (async)\n", -1, func(p *Prog, callIndex int) bool { @@ -199,7 +200,7 @@ func TestMinimize(t *testing.T) { }, // Clear unneeded rerun. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (rerun: 100)\n", -1, func(p *Prog, callIndex int) bool { @@ -210,7 +211,7 @@ func TestMinimize(t *testing.T) { }, // Keep important rerun. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "pipe2(0x0, 0x0) (rerun: 100)\n", -1, func(p *Prog, callIndex int) bool { @@ -221,7 +222,7 @@ func TestMinimize(t *testing.T) { }, // Undo target.SpecialFileLenghts mutation (reduce file name length). { - "test", "64", + "test", "64", MinimizeCrash, "mutate9(&(0x7f0000000000)='./file0aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\\x00')\n", 0, func(p *Prog, callIndex int) bool { @@ -232,7 +233,7 @@ func TestMinimize(t *testing.T) { }, // Ensure `no_minimize` calls are untouched. { - "linux", "amd64", + "linux", "amd64", MinimizeCorpus, "syz_mount_image$ext4(&(0x7f0000000000)='ext4\\x00', &(0x7f0000000100)='./file0\\x00', 0x0, &(0x7f0000010020), 0x1, 0x15, &(0x7f0000000200)=\"$eJwqrqzKTszJSS0CBAAA//8TyQPi\")\n", 0, func(p *Prog, callIndex int) bool { @@ -253,7 +254,7 @@ func TestMinimize(t *testing.T) { if err != nil { t.Fatalf("failed to deserialize original program #%v: %v", ti, err) } - p1, ci := Minimize(p, test.callIndex, MinimizeCorpus, test.pred) + p1, ci := Minimize(p, test.callIndex, test.mode, test.pred) res := p1.Serialize() if string(res) != test.result { t.Fatalf("minimization produced wrong result #%v\norig:\n%v\nexpect:\n%v\ngot:\n%v", |
