How to use MakeReturnArg method of prog Package

Best Syzkaller code snippet using prog.MakeReturnArg

vmaCallHandlers.go

Source:vmaCallHandlers.go Github

copy

Full Screen

...32}33func parseMmap(mmap *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {34 call := &prog.Call{35 Meta: mmap,36 Ret: prog.MakeReturnArg(mmap.Ret),37 }38 ctx.CurrentSyzCall = call39 length := (parseLength(syscall.Args[1], ctx)/ctx.Target.PageSize + 1) * ctx.Target.PageSize //RoundUp PageSize40 log.Logf(3, "mmap call: %#v requires %d memory", syscall, length)41 addrArg, start := parseAddr(length, mmap.Args[0], syscall.Args[0], ctx)42 lengthArg := prog.MakeConstArg(mmap.Args[1], length)43 protArg := parseFlags(mmap.Args[2], syscall.Args[2], ctx, false)44 flagArg := parseFlags(mmap.Args[3], syscall.Args[3], ctx, true)45 fdArg := parseFd(mmap.Args[4], syscall.Args[4], ctx)46 call.Args = []prog.Arg{47 addrArg,48 lengthArg,49 protArg,50 flagArg,51 fdArg,52 prog.MakeConstArg(mmap.Args[5], 0),53 }54 //All mmaps have fixed mappings in syzkaller55 ctx.Tracker.createMapping(call, len(ctx.Prog.Calls), call.Args[0], start, start+length)56 return call57}58func parseMremap(mremap *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {59 call := &prog.Call{60 Meta: mremap,61 Ret: prog.MakeReturnArg(mremap.Ret),62 }63 ctx.CurrentSyzCall = call64 oldAddrArg, start := parseAddr(ctx.Target.PageSize, mremap.Args[0], syscall.Args[0], ctx)65 oldSz := parseLength(syscall.Args[1], ctx)66 newSz := parseLength(syscall.Args[2], ctx)67 oldSzArg := prog.MakeConstArg(mremap.Args[1], oldSz)68 newSzArg := prog.MakeConstArg(mremap.Args[2], newSz)69 flagArg := parseFlags(mremap.Args[3], syscall.Args[3], ctx, true)70 var destAddrArg prog.Arg71 var destAddr uint6472 if len(syscall.Args) > 4 {73 destAddrArg, destAddr = parseAddr(ctx.Target.PageSize, mremap.Args[4], syscall.Args[4], ctx)74 } else {75 straceAddrArg := parser.NewIntsType([]int64{syscall.Ret})76 destAddrArg, destAddr = parseAddr(ctx.Target.PageSize, mremap.Args[4], straceAddrArg, ctx)77 }78 addDependency(start, oldSz, oldAddrArg, ctx)79 call.Args = []prog.Arg{80 oldAddrArg,81 oldSzArg,82 newSzArg,83 flagArg,84 destAddrArg,85 }86 //All mmaps have fixed mappings in syzkaller87 ctx.Tracker.createMapping(call, len(ctx.Prog.Calls), call.Args[4], destAddr, destAddr+newSz)88 return call89}90func parseMsync(msync *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {91 var length uint6492 call := &prog.Call{93 Meta: msync,94 Ret: prog.MakeReturnArg(msync.Ret),95 }96 ctx.CurrentSyzCall = call97 addrArg, address := parseAddr(ctx.Target.PageSize, msync.Args[0], syscall.Args[0], ctx)98 length = parseLength(syscall.Args[1], ctx)99 lengthArg := prog.MakeConstArg(msync.Args[1], length)100 protArg := parseFlags(msync.Args[2], syscall.Args[2], ctx, false)101 addDependency(address, length, addrArg, ctx)102 call.Args = []prog.Arg{103 addrArg,104 lengthArg,105 protArg,106 }107 return call108}109func parseMprotect(mprotect *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {110 call := &prog.Call{111 Meta: mprotect,112 Ret: prog.MakeReturnArg(mprotect.Ret),113 }114 ctx.CurrentSyzCall = call115 addrArg, address := parseAddr(ctx.Target.PageSize, mprotect.Args[0], syscall.Args[0], ctx)116 length := parseLength(syscall.Args[1], ctx)117 lengthArg := prog.MakeConstArg(mprotect.Args[1], length)118 protArg := parseFlags(mprotect.Args[2], syscall.Args[2], ctx, false)119 addDependency(address, length, addrArg, ctx)120 call.Args = []prog.Arg{121 addrArg,122 lengthArg,123 protArg,124 }125 return call126}127func parseMunmap(munmap *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {128 call := &prog.Call{129 Meta: munmap,130 Ret: prog.MakeReturnArg(munmap.Ret),131 }132 ctx.CurrentSyzCall = call133 addrArg, address := parseAddr(ctx.Target.PageSize, munmap.Args[0], syscall.Args[0], ctx)134 length := parseLength(syscall.Args[1], ctx)135 lengthArg := prog.MakeConstArg(munmap.Args[1], length)136 addDependency(address, length, addrArg, ctx)137 call.Args = []prog.Arg{138 addrArg,139 lengthArg,140 }141 return call142}143func parseMadvise(madvise *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {144 call := &prog.Call{145 Meta: madvise,146 Ret: prog.MakeReturnArg(madvise.Ret),147 }148 ctx.CurrentSyzCall = call149 addrArg, address := parseAddr(ctx.Target.PageSize, madvise.Args[0], syscall.Args[0], ctx)150 length := parseLength(syscall.Args[1], ctx)151 lengthArg := prog.MakeConstArg(madvise.Args[1], length)152 var adviceArg prog.Arg153 switch a := syscall.Args[2].(type) {154 case parser.Expression:155 adviceArg = prog.MakeConstArg(madvise.Args[2], a.Eval(ctx.Target))156 default:157 log.Fatalf("Madvise advice arg is not expression")158 }159 addDependency(address, length, addrArg, ctx)160 call.Args = []prog.Arg{161 addrArg,162 lengthArg,163 adviceArg,164 }165 return call166}167func parseMlock(mlock *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {168 call := &prog.Call{169 Meta: mlock,170 Ret: prog.MakeReturnArg(mlock.Ret),171 }172 ctx.CurrentSyzCall = call173 addrArg, address := parseAddr(ctx.Target.PageSize, mlock.Args[0], syscall.Args[0], ctx)174 length := parseLength(syscall.Args[1], ctx)175 flagArg := prog.MakeConstArg(mlock.Args[1], length)176 addDependency(address, length, addrArg, ctx)177 call.Args = []prog.Arg{178 addrArg,179 flagArg,180 }181 return call182}183func parseMunlock(munlock *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {184 call := &prog.Call{185 Meta: munlock,186 Ret: prog.MakeReturnArg(munlock.Ret),187 }188 ctx.CurrentSyzCall = call189 addrArg, address := parseAddr(ctx.Target.PageSize, munlock.Args[0], syscall.Args[0], ctx)190 length := parseLength(syscall.Args[1], ctx)191 flagArg := prog.MakeConstArg(munlock.Args[1], length)192 addDependency(address, length, addrArg, ctx)193 call.Args = []prog.Arg{194 addrArg,195 flagArg,196 }197 return call198}199func parseShmat(shmat *prog.Syscall, syscall *parser.Syscall, ctx *Context) *prog.Call {200 /*201 * Shmat will create a shared memory map which we should track.202 * If the second argument is NULL then shmat will create the memory map and203 * store it at that address if successful.204 */205 shmid := uint64(0)206 var fd prog.Arg207 call := &prog.Call{208 Meta: shmat,209 Ret: prog.MakeReturnArg(shmat.Ret),210 }211 ctx.CurrentSyzCall = call212 if arg := ctx.ReturnCache.get(shmat.Args[0], syscall.Args[0]); arg != nil {213 switch a := arg.Type().(type) {214 case *prog.ResourceType:215 fd = prog.MakeResultArg(shmat.Args[0], arg.(*prog.ResultArg), a.Default())216 default:217 log.Fatalf("Expected first argument of Shmat to be resource type. Got: %s", a.Name())218 }219 } else {220 switch a := syscall.Args[0].(type) {221 case parser.Expression:222 shmid = a.Eval(ctx.Target)223 default:224 shmid = 0225 }226 fd = prog.MakeResultArg(shmat.Args[0], nil, shmid)227 }228 addrArg, address := parseAddr(ctx.Target.PageSize, shmat.Args[1], syscall.Args[1], ctx)229 flags := parseFlags(shmat.Args[2], syscall.Args[2], ctx, false)230 call.Args = []prog.Arg{231 fd,232 addrArg,233 flags,234 }235 //Cache the mapped address since it is a resource type as well236 call.Ret = prog.MakeReturnArg(shmat.Ret)237 straceRet := parser.NewIntsType([]int64{syscall.Ret})238 ctx.ReturnCache.cache(call.Ret.Type(), straceRet, call.Ret)239 length := uint64(4096)240 if req := ctx.Tracker.findShmRequest(shmid); req != nil {241 length = req.getSize()242 }243 ctx.Tracker.createMapping(call, len(ctx.Prog.Calls), call.Args[1], address, address+length)244 return call245}246func parseAddr(length uint64, syzType prog.Type, traceType parser.IrType, ctx *Context) (prog.Arg, uint64) {247 defAddrStart := (ctx.Target.NumPages - 2) * ctx.Target.PageSize248 switch a := traceType.(type) {249 case *parser.PointerType:250 var addrStart uint64...

Full Screen

Full Screen

common.go

Source:common.go Github

copy

Full Screen

...34 args = append(args, prog.MakeConstArg(meta.Args[i].Type, prog.DirIn, 0))35 return &prog.Call{36 Meta: meta,37 Args: args,38 Ret: prog.MakeReturnArg(meta.Ret),39 }40 }41 return func() []*prog.Call {42 if contain {43 return []*prog.Call{44 makeMmap(^target.PageSize+1, target.PageSize, 0),45 makeMmap(0, size, protRW),46 makeMmap(size, target.PageSize, 0),47 }48 }49 return []*prog.Call{makeMmap(0, size, protRW)}50 }51}52func MakeSyzMmap(target *prog.Target) func() []*prog.Call {53 meta := target.SyscallMap["syz_mmap"]54 size := target.NumPages * target.PageSize55 return func() []*prog.Call {56 return []*prog.Call{57 {58 Meta: meta,59 Args: []prog.Arg{60 prog.MakeVmaPointerArg(meta.Args[0].Type, prog.DirIn, 0, size),61 prog.MakeConstArg(meta.Args[1].Type, prog.DirIn, size),62 },63 Ret: prog.MakeReturnArg(meta.Ret),64 },65 }66 }67}68type UnixNeutralizer struct {69 MAP_FIXED uint6470 S_IFREG uint6471 S_IFCHR uint6472 S_IFBLK uint6473 S_IFIFO uint6474 S_IFSOCK uint6475}76func MakeUnixNeutralizer(target *prog.Target) *UnixNeutralizer {77 return &UnixNeutralizer{...

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println(prog.MakeReturnArg())4}5func MakeReturnArg() string {6}7Now, if you want to import prog package from 2.go file, you need to import it using relative path. To import prog package, use the following command:8import "prog"9If you want to import a package from a directory that is not a subdirectory of the current directory, you need to use the following command:10import "github.com/your-username/your-repository-name/your-subdirectory-name"11In the above example, the prog package is in a subdirectory of the current directory. So, the correct way to import the prog package is:12import "prog"13import "github.com/your-username/your-repository-name/your-subdirectory-name"14For example, if you want to import the prog package from the following directory:15You need to use the following command to import the prog package:16import "github.com/your-username/your-repository-name/your-subdirectory-name"17If you want to import the prog package from the following directory:18You need to use the following command to import the prog package:19import "github.com/your-username/your-repository-name/your-subdirectory-name/your-sub-subdirectory-name"20If you want to import the prog package from the following directory:21You need to use the following command to import the prog package:22import "github.com/your-username/your-repository-name"23If you want to import the prog package from the following directory:

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 slice := make([]int, 10)4 for i := 0; i < 10; i++ {5 slice[i] = rand.Intn(100)6 }7 fmt.Println(slice)8 fmt.Println("The largest number is", largest(slice))9}10func largest(slice []int) int {11 for i := 1; i < len(slice); i++ {12 if slice[i] > largest {13 }14 }15}16import (17func main() {18 slice := make([]int, 10)19 for i := 0; i < 10; i++ {20 slice[i] = rand.Intn(100)21 }22 fmt.Println(slice)23 fmt.Println("The smallest number is", smallest(slice))24}25func smallest(slice []int) int {26 for i := 1; i < len(slice); i++ {27 if slice[i] < smallest {28 }29 }30}

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 fmt.Println(reflect.ValueOf(3).Interface())4}5import (6func main() {7 fmt.Println(reflect.ValueOf(3).Interface())8}9import (10func main() {11 fmt.Println(reflect.ValueOf(3).Interface())12}13import (14func main() {15 fmt.Println(reflect.ValueOf(3).Interface())16}17import (18func main() {19 fmt.Println(reflect.ValueOf(3).Interface())20}21import (22func main() {23 fmt.Println(reflect.ValueOf(3).Interface())24}25import (

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 target, err := targets.Get("linux", "amd64")4 if err != nil {5 fmt.Println(err)6 }7 p := prog.MakeProg(target)8 f := prog.MakeFile("test.c")9 fn := prog.MakeFunc("test")10 b := prog.MakeInstrBlock()11 c := prog.MakeCall(target.Syscalls[1])12 r := prog.MakeReturnArg(target.Syscalls[1].Ret)13 b.Instrs = append(b.Instrs, c)14 fn.Blocks = append(fn.Blocks, b)15 f.Funcs = append(f.Funcs, fn)16 p.Files = append(p.Files, f)17 fmt.Println(p.Serialize())18}

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import "fmt"2func main() {3 p := prog{1, 2}4 fmt.Println(p)5 p2 := p.MakeReturnArg()6 fmt.Println(p2)7}8{1 2}9{1 2}10import "fmt"11type prog struct {12}13func (p *prog) change() {14}15func main() {16 p := prog{1, 2}17 fmt.Println(p)18 p.change()19 fmt.Println(p)20}21{1 2}22{6 7}23import "fmt"24type prog struct {25}26func (p prog) change() {27}28func main() {29 p := prog{1, 2}30 fmt.Println(p)31 p.change()32 fmt.Println(p)33}34{1 2}35{1 2}

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 p := gobuild.NewProg()4 f := p.MakeFunc("add", []gobuild.Arg{5 p.MakeArg("int", "arg1"),6 p.MakeArg("string", "arg2"),7 }, []gobuild.Arg{8 p.MakeReturnArg("float", "result"),9 })10 f.AddReturn(p.MakeConst("float", "3.14"))11 file := p.MakeFile("add.go")12 file.AddFunc(f)13 fmt.Println(file)14}15import (16func main() {17 p := gobuild.NewProg()18 f := p.MakeFunc("add", []gobuild.Arg{19 p.MakeArg("int", "arg1"),20 p.MakeArg("string", "arg2"),21 }, []gobuild.Arg{22 p.MakeReturnArg("float", "result"),23 })24 f.AddReturn(p.MakeConst("float", "3.14"))

Full Screen

Full Screen

MakeReturnArg

Using AI Code Generation

copy

Full Screen

1import (2func main() {3 var k reflect.Value = reflect.MakeReturnArg(reflect.TypeOf(i))4 fmt.Printf("%v", k)5}6import (7func main() {8 var i reflect.Value = reflect.MakeSlice(reflect.TypeOf([]int{1, 2, 3}), 3, 3)9 fmt.Printf("%v", i)10}11import (12func main() {13 var i reflect.Value = reflect.MakeString("Hello World")14 fmt.Printf("%v", i)15}16import (17func main() {

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Syzkaller automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Most used method in

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful