diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-04-26 14:26:41 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-04-28 16:52:22 +0200 |
| commit | dcd4b58785fe71ff05ae045693f89b23b670ab28 (patch) | |
| tree | 2461db908c5b12d0b2355c85f379ba07e9953108 /prog/encoding_test.go | |
| parent | e3ecea2e7fc6b80cc715c596105f4cf890e7e2e6 (diff) | |
prog: make program parsing more permissive
Don't error on wrong vma with value in non strict mode.
Add more tests and fix use of cmp package (prog.Syscall is not comparable anymore).
Diffstat (limited to 'prog/encoding_test.go')
| -rw-r--r-- | prog/encoding_test.go | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/prog/encoding_test.go b/prog/encoding_test.go index b5d17d007..2464f35da 100644 --- a/prog/encoding_test.go +++ b/prog/encoding_test.go @@ -10,8 +10,6 @@ import ( "reflect" "sort" "testing" - - "github.com/google/go-cmp/cmp" ) func setToArray(s map[string]struct{}) []string { @@ -294,6 +292,24 @@ func TestDeserialize(t *testing.T) { Out: `test$str2(&(0x7f0000000000)='foo\x00')`, StrictErr: `bad string value "baz\x00", expect ["foo\x00" "bar\x00"]`, }, + { + In: `test$opt2(&(0x7f0000000000))`, + Out: `test$opt2(0x0)`, + }, + { + In: `test$opt2(&(0x7f0000000001))`, + Out: `test$opt2(0x0)`, + StrictErr: `unaligned vma address 0x1`, + }, + { + In: `test$opt2(&(0x7f0000000000)=nil)`, + Out: `test$opt2(0x0)`, + }, + { + In: `test$opt2(&(0x7f0000000000)='foo')`, + Out: `test$opt2(0x0)`, + StrictErr: `non-nil argument for nil type`, + }, }) } @@ -335,8 +351,8 @@ func TestSerializeDeserializeRandom(t *testing.T) { if err != nil { t.Fatal(err) } - diff := cmp.Diff(decoded0, decoded1) - t.Logf("decoded diff: %v", diff) + t.Logf("decoded0: %+v", decoded0) + t.Logf("decoded1: %+v", decoded1) t.Fatalf("was: %q\ngot: %q\nprogram:\n%s", data0[:n0], data1[:n1], p0.Serialize()) } @@ -358,6 +374,8 @@ func testSerializeDeserialize(t *testing.T, p0 *Prog, data0, data1 []byte) (bool t.Fatal(err) } if !bytes.Equal(data0[:n0], data1[:n1]) { + t.Logf("PROG0:\n%s\n", p0.Serialize()) + t.Logf("PROG1:\n%s\n", p1.Serialize()) return false, n0, n1 } return true, 0, 0 |
