aboutsummaryrefslogtreecommitdiffstats
path: root/executor
Commit message (Collapse)AuthorAgeFilesLines
...
* executor: handle old and new selinux mount pointsDmitry Vyukov2018-01-231-2/+6
|
* pkg/compiler: fix len of parent template structDmitry Vyukov2018-01-231-4/+6
| | | | | | | | | | | | | | | | | | | | | Consider the following example: type len_templ1[DATA1, DATA2] { data DATA1 inner len_temp2[DATA2] } type len_temp2[DATA] { data DATA len len[len_templ1, int8] } Here len refers to a parent struct, but the struct is a template, so it's actual name is something like "len_templ1[int8, int16]". Currently this does not work as compiler barks at incorrect len target. Make this work.
* sys/linux: add netfilter descriptionsDmitry Vyukov2018-01-221-10/+15
| | | | Lots of TODOs and only ipv4, but some start.
* executor: reshuffle namespace sandboxing sequence againDmitry Vyukov2018-01-221-11/+14
| | | | | | | | | | Now we create tun in the _outer_ net namespace, which is tied to init user namespace. Thus fuzzer does not have CAP_ADMIN in it. In the end it seems that there is no sandboxing sequence, which would give us everything we need. Reshuffle sequences so that we have corrent namespace hierarchy, but don't have IFF_NAPI_FRAGS.
* sys/linux: add AF_VSOCK/vhost descriptionsDmitry Vyukov2018-01-191-10/+180
|
* sys/linux: add AF_RDS descriptionsDmitry Vyukov2018-01-191-10/+70
|
* executor: harden a bit against fuzzer madnessDmitry Vyukov2018-01-191-8/+14
|
* sys/linux: make xattr prefix non-zero-terminatedDmitry Vyukov2018-01-181-5/+5
|
* sys/linux: more selinux descriptionsDmitry Vyukov2018-01-182-11/+46
|
* sys/linux: generate GRE v0 packets even with incorrect payloadDmitry Vyukov2018-01-151-5/+5
|
* sys/linux: more NETLINK_ROUTE descriptionsDmitry Vyukov2018-01-151-5/+5
|
* executor: fix tun/device setup for sandbox=namespaceDmitry Vyukov2018-01-151-8/+33
| | | | | | | | For sandbox=namespace we first create network devices and then do CLONE_NEWNS, which brings us into a new namespace which actually does not have any of these devices. Tun mostly worked, because we hold fd to the tun device. However, even for tun we could not see the "syz0" device.
* sys/linux: add AF_PPPOX descriptionsDmitry Vyukov2018-01-151-10/+120
|
* sys/linux: add vnet descriptions for GRE, MPLS, CANDmitry Vyukov2018-01-141-5/+5
|
* sys/linux: more AF_NETLINK/NETLINK_ROUTE descriptionsDmitry Vyukov2018-01-141-5/+5
|
* sys/linux: add broadcast/multicast mac addressesDmitry Vyukov2018-01-141-5/+5
|
* sys/linux: add AF_CAN descriptionsDmitry Vyukov2018-01-131-10/+45
|
* executor: tidy up debug outputDmitry Vyukov2018-01-131-2/+1
| | | | | 1. Don't print copyin (there are too many of them). 2. Print copyout value (it's usually important).
* sys/linux: add AF_NETLINK/NETLINK_ROUTE supportDmitry Vyukov2018-01-131-10/+20
|
* executor: setup network devicesDmitry Vyukov2018-01-132-23/+60
| | | | | | We test in a new network namespace, which does not have any devices set up (even lo). Create/up as many devices as possible. Give them some addresses and use these addresses in descriptions.
* sys/syz-sysgen: don't generate syz_ syscall numbersDmitry Vyukov2018-01-137-436/+369
| | | | They don't seem to be used today.
* sys/linux: use type templates for netlinkDmitry Vyukov2018-01-131-5/+5
| | | | -350 lines of descriptions
* pkg/compiler: support void typeDmitry Vyukov2018-01-137-13/+13
| | | | | | "void": type with static size 0 mostly useful inside of templates and varlen unions can't be syscall argument
* sys/linux: regenerate arm consts + small netlink fixedDmitry Vyukov2018-01-111-5/+5
| | | | | | | | Arm was broken on upstream kernel for some time due to some assembler error. Now it seems to be fixed, so regenerate consts. Also fix small issues in new netlink descriptions.
* sys/linux: add AF_NETLINK/NETLINK_NETFILTER descriptionsDmitry Vyukov2018-01-091-10/+20
|
* sys/linux: add AF_NETLINK/NETLINK_GENERIC descriptionsDmitry Vyukov2018-01-091-10/+20
|
* sys/linux: duplicate open/accept specializations with openat/accept4Dmitry Vyukov2018-01-091-10/+30
| | | | | | | | open is not present on arm64, only openat. accept is not present on 386, only accept4. Duplicate all open/accept specializations with corresponding openat/accept4 specializations to enable testing on 386/arm64.
* sys/linux: add AF_NETLINK/NETLINK_CRYPTO descriptionsDmitry Vyukov2018-01-091-10/+20
|
* sys/linux: add ion and ashmem devices supportDmitry Vyukov2018-01-091-22/+68
| | | | | Note: ion supercedes the old android interface, which is moved to sys/android.
* sys/linux: resolve few TODOsDmitry Vyukov2018-01-081-5/+5
|
* pkg/compiler: make signalno a type aliasDmitry Vyukov2018-01-081-5/+5
| | | | | | | We don't need compiler support for such things anymore, now we simply can do: type signalno int32[0:65]
* prog: support opt for proc typesDmitry Vyukov2018-01-062-9/+13
|
* prog: add test for len mutationDmitry Vyukov2018-01-061-4/+6
| | | | Test we actually can get an unnatural len value.
* pkg/compiler: add bitsize typeDmitry Vyukov2018-01-065-13/+17
| | | | This is need for few crypto/xfrm descriptions.
* sys/linux: netlink xfrm supportDmitry Vyukov2017-12-311-10/+20
|
* sys/linux: add multicast and ipv4 mapped ipv6 addressesDmitry Vyukov2017-12-291-10/+15
|
* sys/linux: describe ipv6 tlv optionsDmitry Vyukov2017-12-291-5/+5
|
* sys/linux: improve bpf descriptionsDmitry Vyukov2017-12-291-5/+5
|
* sys/linux: improve perf descriptionsDmitry Vyukov2017-12-291-10/+15
|
* sys/linux: assorted improvementsDmitry Vyukov2017-12-291-10/+115
| | | | Mostly extensions of API in 4.15.
* sys/linux: fix some copy-paste errorsDmitry Vyukov2017-12-281-30/+11
|
* sys/linux: fix splice signatureDmitry Vyukov2017-12-271-6/+7
| | | | ...was wrong all that time
* executor: introduce uint64/32/16/8 typesDmitry Vyukov2017-12-2718-359/+364
| | | | | | | | | | | | | | | The "define uint64_t unsigned long long" were too good to work. With a different toolchain I am getting: cstdint:69:11: error: expected unqualified-id using ::uint64_t; ^ executor/common.h:34:18: note: expanded from macro 'uint64_t' Do it the proper way: introduce uint64/32/16/8 types and use them. pkg/csource then does s/uint64/uint64_t/ to not clutter code with additional typedefs.
* executor: fix another format bugDmitry Vyukov2017-12-271-1/+1
| | | | Detected only by clang.
* executor: fix reply status on loop killsDmitry Vyukov2017-12-271-1/+2
| | | | | | | We use exitf on loop failures, anbd exitf is retry-able. However, we use different status when replying to ipc, and that different status is what ipc actually uses. Use kRetryStatus status in case on unexpected loop failures.
* executor: check format stringsDmitry Vyukov2017-12-275-34/+36
| | | | | | | | | | | | | | | | | | | I see a crash which says: #0: too much cover 0 (errno 0) while the code is: uint64_t n = ...; if (n >= kCoverSize) fail("#%d: too much cover %u", th->id, n); It seems that the high part of n is set, but we don't see it. Add printf format attribute to fail and friends and fix all similar cases. Caught a bunch of similar cases and a missing argument in: exitf("opendir(%s) failed due to NOFILE, exiting");
* pkg/csource: mimic the way syscalls are scheduled in executorDmitry Vyukov2017-12-222-1/+64
| | | | | | | | Currently csource uses completely different, simpler way of scheduling syscalls onto threads (thread per call with random sleeps). Mimic the way calls are scheduled in executor. Fixes #312
* executor: remove dead codeDmitry Vyukov2017-12-221-2/+0
| | | | doexit already contains an infinite loop.
* pkg/csource: fix handling of proc typesDmitry Vyukov2017-12-222-17/+40
| | | | | | | | | | Generated program always uses pid=0 even when there are multiple processes. Make each process use own pid. Unfortunately required to do quite significant changes to prog, because the current format only supported fixed pid. Fixes #490
* prog: use dense indexes for copyout instructionsDmitry Vyukov2017-12-171-18/+24
| | | | Fixes #174