From 8e96f161affec8f01886bc6019a6f01ec4b498a8 Mon Sep 17 00:00:00 2001 From: Evgeny Vereshchagin Date: Tue, 27 Nov 2018 12:47:06 +0100 Subject: [PATCH] tests: keep going even if setup_mount_namespace has failed This should address https://github.com/google/oss-fuzz/issues/1983. --- src/fuzz/fuzz-udev-rules.c | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/fuzz/fuzz-udev-rules.c b/src/fuzz/fuzz-udev-rules.c index 36c39e1..5889bbe 100644 --- a/src/fuzz/fuzz-udev-rules.c +++ b/src/fuzz/fuzz-udev-rules.c @@ -70,17 +70,25 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { _cleanup_(rm_rf_physical_and_freep) char *runtime_dir = NULL; FILE *f = NULL; + /* To judge from https://oss-fuzz.com/testcase?key=5642013043589120, unshare/mount can fail. + * It isn't critical so let's ignore it for now to see how it goes */ + (void) setup_mount_namespace(); + + assert_se(runtime_dir = setup_fake_runtime_dir()); + + if (setup_fake_filesystems(runtime_dir) < 0) { +#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION + return EXIT_TEST_SKIP; +#else + abort(); +#endif + } + if (!getenv("SYSTEMD_LOG_LEVEL")) { log_set_max_level_realm(LOG_REALM_UDEV, LOG_CRIT); log_set_max_level_realm(LOG_REALM_SYSTEMD, LOG_CRIT); } - if (setup_mount_namespace() < 0) - return EXIT_TEST_SKIP; - - assert_se(runtime_dir = setup_fake_runtime_dir()); - - assert_se(setup_fake_filesystems(runtime_dir) >= 0); assert_se(mkdir_p("/etc/udev/rules.d", 0755) >= 0); f = fopen("/etc/udev/rules.d/fuzz.rules", "we"); assert_se(f); -- 2.7.4