From 922e8e27343704155b81f50ddd3316ec04c9d299 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Thu, 9 Aug 2018 13:50:49 +0200 Subject: 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. --- pkg/csource/generated.go | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) (limited to 'pkg/csource') 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; -- cgit mrf-deployment