aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksandr Nogikh <nogikh@google.com>2023-04-21 14:45:31 +0200
committerAleksandr Nogikh <wp32pw@gmail.com>2023-04-24 18:52:43 +0200
commit65320f8e65b2fd5215822c6fc85034cec63dd887 (patch)
treefdb5ed9e9290f193c051f15eb69624d01161ad5a
parent3097c1c27c156dde5dae8af2d6824c24f3f671fa (diff)
sys/netbsd: neutralize compat_50_mknod
Otherwise we may end up corrupting device memory. See https://groups.google.com/g/syzkaller-netbsd-bugs/c/Iy8-NZ_M9Ug/m/5jKKfncsAQAJ
-rw-r--r--sys/netbsd/init_test.go21
-rw-r--r--sys/targets/common.go2
2 files changed, 22 insertions, 1 deletions
diff --git a/sys/netbsd/init_test.go b/sys/netbsd/init_test.go
new file mode 100644
index 000000000..1f0abfad3
--- /dev/null
+++ b/sys/netbsd/init_test.go
@@ -0,0 +1,21 @@
+// Copyright 2023 syzkaller project authors. All rights reserved.
+// Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
+
+package netbsd_test
+
+import (
+ "testing"
+
+ "github.com/google/syzkaller/prog"
+ _ "github.com/google/syzkaller/sys/netbsd/gen"
+ "github.com/google/syzkaller/sys/targets"
+)
+
+func TestNetBSDNeutralize(t *testing.T) {
+ prog.TestDeserializeHelper(t, targets.NetBSD, targets.AMD64, nil, []prog.DeserializeTest{
+ {
+ In: `compat_50_mknod(&(0x7f0000000000)='./file0\x00', 0x2001, 0x400)`,
+ Out: `compat_50_mknod(&(0x7f0000000000)='./file0\x00', 0x8001, 0x400)`,
+ },
+ })
+}
diff --git a/sys/targets/common.go b/sys/targets/common.go
index a29365ce3..b6827e76e 100644
--- a/sys/targets/common.go
+++ b/sys/targets/common.go
@@ -91,7 +91,7 @@ func (arch *UnixNeutralizer) Neutralize(c *prog.Call, fixStructure bool) error {
}
// Add MAP_FIXED flag, otherwise it produces non-deterministic results.
c.Args[3].(*prog.ConstArg).Val |= arch.MAP_FIXED
- case "mknod", "mknodat":
+ case "mknod", "mknodat", "compat_50_mknod":
pos := 1
if c.Meta.CallName == "mknodat" {
pos = 2