From 5a0d6e039dc1a8bdf3e14650f0eb106e0196e178 Mon Sep 17 00:00:00 2001 From: Andrey Konovalov Date: Thu, 15 Nov 2018 20:16:20 +0100 Subject: prog: try to nullify pointers when minimizing This patch changes minimization routines to try assigning a.Res to nil for each pointer arg. --- prog/minimization_test.go | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'prog/minimization_test.go') diff --git a/prog/minimization_test.go b/prog/minimization_test.go index d41663e70..a34ce1f3a 100644 --- a/prog/minimization_test.go +++ b/prog/minimization_test.go @@ -47,7 +47,7 @@ func TestMinimize(t *testing.T) { return len(p.Calls) == 2 && p.Calls[0].Meta.Name == "mmap" && p.Calls[1].Meta.Name == "pipe2" }, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x0, 0x10, 0xffffffffffffffff, 0x0)\n" + - "pipe2(&(0x7f0000000000), 0x0)\n", + "pipe2(0x0, 0x0)\n", 1, }, // Remove two dependent calls. @@ -80,7 +80,7 @@ func TestMinimize(t *testing.T) { return p.String() == "mmap-write-sched_yield" }, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x0, 0x10, 0xffffffffffffffff, 0x0)\n" + - "write(0xffffffffffffffff, &(0x7f0000000000), 0x0)\n" + + "write(0xffffffffffffffff, 0x0, 0x0)\n" + "sched_yield()\n", 2, }, @@ -95,10 +95,30 @@ func TestMinimize(t *testing.T) { return p.String() == "mmap-write-sched_yield" }, "mmap(&(0x7f0000000000/0x1000)=nil, 0x1000, 0x0, 0x10, 0xffffffffffffffff, 0x0)\n" + - "write(0xffffffffffffffff, &(0x7f0000000000), 0x0)\n" + + "write(0xffffffffffffffff, 0x0, 0x0)\n" + "sched_yield()\n", -1, }, + // Minimize pointer. + { + "pipe2(&(0x7f0000001000)={0xffffffffffffffff, 0xffffffffffffffff}, 0x0)\n", + -1, + func(p *Prog, callIndex int) bool { + return len(p.Calls) == 1 && p.Calls[0].Meta.Name == "pipe2" + }, + "pipe2(0x0, 0x0)\n", + -1, + }, + // Minimize pointee. + { + "pipe2(&(0x7f0000001000)={0xffffffffffffffff, 0xffffffffffffffff}, 0x0)\n", + -1, + func(p *Prog, callIndex int) bool { + return len(p.Calls) == 1 && p.Calls[0].Meta.Name == "pipe2" && p.Calls[0].Args[0].(*PointerArg).Address != 0 + }, + "pipe2(&(0x7f0000001000), 0x0)\n", + -1, + }, } target, _, _ := initTest(t) for ti, test := range tests { -- cgit mrf-deployment