| // Copyright 2017 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 akaros |
| |
| import ( |
| "github.com/google/syzkaller/prog" |
| "github.com/google/syzkaller/sys/targets" |
| ) |
| |
| type arch struct { |
| unix *targets.UnixSanitizer |
| } |
| |
| func InitTarget(target *prog.Target) { |
| arch := &arch{ |
| unix: targets.MakeUnixSanitizer(target), |
| } |
| target.MakeMmap = targets.MakePosixMmap(target) |
| target.SanitizeCall = arch.sanitizeCall |
| } |
| |
| func (arch *arch) sanitizeCall(c *prog.Call) { |
| arch.unix.SanitizeCall(c) |
| switch c.Meta.CallName { |
| case "provision": |
| if pid, ok := c.Args[0].(*prog.ConstArg); ok && uint32(pid.Val) == ^uint32(0) { |
| // pid -1 causes some debugging splat on console. |
| pid.Val = 0 |
| } |
| } |
| } |