From ba64d006de17a5bfa0c99e4b96711ba42f82e199 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Sun, 9 Dec 2018 18:05:58 +0100 Subject: prog: implement strict parsing mode Add bulk of checks for strict parsing mode. Probably not complete, but we can extend then in future as needed. Turns out we can't easily use it for serialized programs as they omit default args and during deserialization it looks like missing args. --- prog/prog_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'prog/prog_test.go') diff --git a/prog/prog_test.go b/prog/prog_test.go index 1edb7690b..45ab56cfe 100644 --- a/prog/prog_test.go +++ b/prog/prog_test.go @@ -37,7 +37,7 @@ func TestDefaultCallArgs(t *testing.T) { for _, meta := range target.SyscallMap { // Ensure that we can restore all arguments of all calls. prog := fmt.Sprintf("%v()", meta.Name) - p, err := target.Deserialize([]byte(prog), Strict) + p, err := target.Deserialize([]byte(prog), NonStrict) if err != nil { t.Fatalf("failed to restore default args in prog %q: %v", prog, err) } @@ -52,7 +52,7 @@ func TestSerialize(t *testing.T) { for i := 0; i < iters; i++ { p := target.Generate(rs, 10, nil) data := p.Serialize() - p1, err := target.Deserialize(data, Strict) + p1, err := target.Deserialize(data, NonStrict) if err != nil { t.Fatalf("failed to deserialize program: %v\n%s", err, data) } @@ -154,7 +154,7 @@ func testCrossTarget(t *testing.T, target *Target, crossTargets []*Target) { for i := 0; i < iters; i++ { p := target.Generate(rs, 20, nil) testCrossArchProg(t, p, crossTargets) - p, err := target.Deserialize(p.Serialize(), Strict) + p, err := target.Deserialize(p.Serialize(), NonStrict) if err != nil { t.Fatal(err) } @@ -171,7 +171,7 @@ func testCrossTarget(t *testing.T, target *Target, crossTargets []*Target) { func testCrossArchProg(t *testing.T, p *Prog, crossTargets []*Target) { serialized := p.Serialize() for _, crossTarget := range crossTargets { - _, err := crossTarget.Deserialize(serialized, Strict) + _, err := crossTarget.Deserialize(serialized, NonStrict) if err == nil || strings.Contains(err.Error(), "unknown syscall") { continue } -- cgit mrf-deployment