aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/csource/generated.go
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2018-08-09 13:50:49 +0200
committerDmitry Vyukov <dvyukov@google.com>2018-08-09 16:05:46 +0200
commit922e8e27343704155b81f50ddd3316ec04c9d299 (patch)
treeee5f2640775e336d923912c3249bac797dd33e05 /pkg/csource/generated.go
parentacf31536e9e570b2a5ee11a7818c96e4d177c808 (diff)
executor: mount binfmt_mist
We forgot to mount binfmt_misc. Mount it. Add a test. Increase per-call timeout, otherwise last execve timesout. Fix csource waiting for call completion at the end of program.
Diffstat (limited to 'pkg/csource/generated.go')
-rw-r--r--pkg/csource/generated.go15
1 files changed, 9 insertions, 6 deletions
diff --git a/pkg/csource/generated.go b/pkg/csource/generated.go
index b9699c999..cd59914e3 100644
--- a/pkg/csource/generated.go
+++ b/pkg/csource/generated.go
@@ -2928,10 +2928,13 @@ static void setup_cgroups()
}
static void setup_binfmt_misc()
{
- if (!write_file("/proc/sys/fs/binfmt_misc/register", ":syz0:M:0:syz0::./file0:")) {
+ if (mount(0, "/proc/sys/fs/binfmt_misc", "binfmt_misc", 0, 0)) {
+ debug("mount(binfmt_misc) failed: %d\n", errno);
+ }
+ if (!write_file("/proc/sys/fs/binfmt_misc/register", ":syz0:M:0:\x01::./file0:")) {
debug("write(/proc/sys/fs/binfmt_misc/register, syz0) failed: %d\n", errno);
}
- if (!write_file("/proc/sys/fs/binfmt_misc/register", ":syz1:M:1:yz1::./file0:POC")) {
+ if (!write_file("/proc/sys/fs/binfmt_misc/register", ":syz1:M:1:\x02::./file0:POC")) {
debug("write(/proc/sys/fs/binfmt_misc/register, syz1) failed: %d\n", errno);
}
}
@@ -3776,7 +3779,7 @@ static void loop()
#if SYZ_TRACE
printf("### start\n");
#endif
- int call, thread;
+ int i, call, thread;
#if SYZ_COLLIDE
int collide = 0;
again:
@@ -3801,12 +3804,12 @@ again:
if (collide && (call % 2) == 0)
break;
#endif
- event_timedwait(&th->done, 25);
- if (__atomic_load_n(&running, __ATOMIC_RELAXED))
- sleep_ms((call == [[NUM_CALLS]] - 1) ? 10 : 2);
+ event_timedwait(&th->done, 45);
break;
}
}
+ for (i = 0; i < 100 && __atomic_load_n(&running, __ATOMIC_RELAXED); i++)
+ sleep_ms(1);
#if SYZ_COLLIDE
if (!collide) {
collide = 1;