teknoraver / rpms / systemd

Forked from rpms/systemd 2 months ago
Clone

Blame SOURCES/0159-meson-treat-all-fuzz-cases-as-unit-tests.patch

4bff0a
From 6a8c286e1a45dfa64c48cd4d5a911d4f71de9a16 Mon Sep 17 00:00:00 2001
4bff0a
From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
4bff0a
Date: Fri, 10 Aug 2018 17:15:05 +0200
4bff0a
Subject: [PATCH] meson: treat all fuzz cases as unit tests
4bff0a
4bff0a
318/365 fuzz-bus-message:crash-26bba7182dedc8848939931d9fcefcb7922f2e56:address  OK       0.03 s
4bff0a
319/365 fuzz-bus-message:crash-29ed3c202e0ffade3cad42c8bbeb6cc68a21eb8e:address  OK       0.03 s
4bff0a
320/365 fuzz-bus-message:crash-b88ad9ecf4aacf4a0caca5b5543953265367f084:address  OK       0.03 s
4bff0a
321/365 fuzz-bus-message:crash-c1b37b4729b42c0c05b23cba4eed5d8102498a1e:address  OK       0.03 s
4bff0a
322/365 fuzz-bus-message:crash-d8f3941c74219b4c03532c9b244d5ea539c61af5:address  OK       0.03 s
4bff0a
323/365 fuzz-bus-message:crash-e1b811da5ca494e494b77c6bd8e1c2f2989425c5:address  OK       0.03 s
4bff0a
324/365 fuzz-bus-message:leak-c09c0e2256d43bc5e2d02748c8d8760e7bc25d20:address  OK       0.04 s
4bff0a
325/365 fuzz-bus-message:message1:address       OK       0.03 s
4bff0a
326/365 fuzz-bus-message:timeout-08ee8f6446a4064db064e8e0b3d220147f7d0b5b:address  OK       0.03 s
4bff0a
327/365 fuzz-dhcp-server:discover-existing:address  OK       0.04 s
4bff0a
328/365 fuzz-dhcp-server:discover-new:address   OK       0.03 s
4bff0a
329/365 fuzz-dhcp-server:release:address        OK       0.04 s
4bff0a
330/365 fuzz-dhcp-server:request-existing:address  OK       0.03 s
4bff0a
331/365 fuzz-dhcp-server:request-new:address    OK       0.03 s
4bff0a
332/365 fuzz-dhcp-server:request-reboot:address  OK       0.03 s
4bff0a
333/365 fuzz-dhcp-server:request-renew:address  OK       0.03 s
4bff0a
334/365 fuzz-dns-packet:issue-7888:address      OK       0.03 s
4bff0a
335/365 fuzz-dns-packet:oss-fuzz-5465:address   OK       0.03 s
4bff0a
336/365 fuzz-journal-remote:crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76:address  OK       0.06 s
4bff0a
337/365 fuzz-journal-remote:crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45:address  OK       0.04 s
4bff0a
338/365 fuzz-journal-remote:invalid-ts.txt:address  OK       0.04 s
4bff0a
339/365 fuzz-journal-remote:oss-fuzz-8659:address  OK       0.06 s
4bff0a
340/365 fuzz-journal-remote:oss-fuzz-8686:address  OK       0.04 s
4bff0a
341/365 fuzz-journal-remote:sample.txt:address  OK       0.07 s
4bff0a
342/365 fuzz-unit-file:directives.service:address  OK       0.03 s
4bff0a
343/365 fuzz-unit-file:empty.scope:address      OK       0.04 s
4bff0a
344/365 fuzz-unit-file:machine.slice:address    OK       0.03 s
4bff0a
345/365 fuzz-unit-file:oss-fuzz-6884:address    OK       0.05 s
4bff0a
346/365 fuzz-unit-file:oss-fuzz-6885:address    OK       0.03 s
4bff0a
347/365 fuzz-unit-file:oss-fuzz-6886:address    OK       0.04 s
4bff0a
348/365 fuzz-unit-file:oss-fuzz-6892:address    OK       0.03 s
4bff0a
349/365 fuzz-unit-file:oss-fuzz-6897:address    OK       0.05 s
4bff0a
350/365 fuzz-unit-file:oss-fuzz-6897-evverx:address  OK       0.04 s
4bff0a
351/365 fuzz-unit-file:oss-fuzz-6908:address    OK       0.05 s
4bff0a
352/365 fuzz-unit-file:oss-fuzz-6917:address    OK       0.06 s
4bff0a
353/365 fuzz-unit-file:oss-fuzz-6977:address    OK       0.08 s
4bff0a
354/365 fuzz-unit-file:oss-fuzz-6977-unminimized:address  OK       0.10 s
4bff0a
355/365 fuzz-unit-file:oss-fuzz-7004:address    OK       0.03 s
4bff0a
356/365 fuzz-unit-file:oss-fuzz-8064:address    OK       0.03 s
4bff0a
357/365 fuzz-unit-file:oss-fuzz-8827:address    OK       0.50 s
4bff0a
358/365 fuzz-unit-file:proc-sys-fs-binfmt_misc.automount:address  OK       0.03 s
4bff0a
359/365 fuzz-unit-file:syslog.socket:address    OK       0.03 s
4bff0a
360/365 fuzz-unit-file:systemd-ask-password-console.path:address  OK       0.03 s
4bff0a
361/365 fuzz-unit-file:systemd-machined.service:address  OK       0.03 s
4bff0a
362/365 fuzz-unit-file:systemd-resolved.service:address  OK       0.03 s
4bff0a
363/365 fuzz-unit-file:systemd-tmpfiles-clean.timer:address  OK       0.03 s
4bff0a
364/365 fuzz-unit-file:timers.target:address    OK       0.03 s
4bff0a
365/365 fuzz-unit-file:var-lib-machines.mount:address  OK       0.04 s
4bff0a
4bff0a
This gives us slightly nicer coverage in the normal test run.
4bff0a
4bff0a
When in a git repo, git ls-files is used to get a list of files known to git.
4bff0a
This mirrors what update-man-rules does for man files. Only looking at files
4bff0a
known to git makes it easier to not forget to commit the test file to git,
4bff0a
and also makes bisecting easier if some files are left in repo.
4bff0a
4bff0a
When outside of a git repo, we expect to be unpacked from a tarball, so just
4bff0a
using all files reported by ls is OK.
4bff0a
4bff0a
(cherry picked from commit e6bad6746151c79a5f408e95714ffa5cea290ab0)
4bff0a
4bff0a
Resolves: #1696224
4bff0a
---
4bff0a
 meson.build           |  2 +-
4bff0a
 test/fuzz/meson.build | 48 ++++++++++++++++++-------------------------
4bff0a
 2 files changed, 21 insertions(+), 29 deletions(-)
4bff0a
4bff0a
diff --git a/meson.build b/meson.build
4bff0a
index fe161e5ec5..04b461dcd4 100644
4bff0a
--- a/meson.build
4bff0a
+++ b/meson.build
4bff0a
@@ -2804,7 +2804,7 @@ foreach tuple : sanitizers
4bff0a
                                 test('@0@:@1@:@2@'.format(b, c, sanitizer),
4bff0a
                                      env,
4bff0a
                                      args : [exe.full_path(),
4bff0a
-                                             join_paths(meson.source_root(), 'test/fuzz', p)])
4bff0a
+                                             join_paths(meson.source_root(), p)])
4bff0a
                         endif
4bff0a
                 endforeach
4bff0a
         endif
4bff0a
diff --git a/test/fuzz/meson.build b/test/fuzz/meson.build
4bff0a
index b98436a4af..56d0f69660 100644
4bff0a
--- a/test/fuzz/meson.build
4bff0a
+++ b/test/fuzz/meson.build
4bff0a
@@ -11,31 +11,23 @@ sanitize_address = custom_target(
4bff0a
 
4bff0a
 sanitizers = [['address', sanitize_address]]
4bff0a
 
4bff0a
-fuzz_regression_tests = '''
4bff0a
-        fuzz-dns-packet/issue-7888
4bff0a
-        fuzz-dns-packet/oss-fuzz-5465
4bff0a
-        fuzz-journal-remote/crash-5a8f03d4c3a46fcded39527084f437e8e4b54b76
4bff0a
-        fuzz-journal-remote/crash-96dee870ea66d03e89ac321eee28ea63a9b9aa45
4bff0a
-        fuzz-journal-remote/oss-fuzz-8659
4bff0a
-        fuzz-journal-remote/oss-fuzz-8686
4bff0a
-        fuzz-journald-syslog/github-9795
4bff0a
-        fuzz-journald-syslog/github-9820
4bff0a
-        fuzz-journald-syslog/github-9827
4bff0a
-        fuzz-journald-syslog/github-9829
4bff0a
-        fuzz-ndisc-rs/timeout-2815b773c712fa33bea62f541dfa3017c64ea2f1
4bff0a
-        fuzz-ndisc-rs/timeout-61fff7fd1e5dcc07e1b656baab29065ce634ad5b
4bff0a
-        fuzz-unit-file/oss-fuzz-6884
4bff0a
-        fuzz-unit-file/oss-fuzz-6885
4bff0a
-        fuzz-unit-file/oss-fuzz-6886
4bff0a
-        fuzz-unit-file/oss-fuzz-6892
4bff0a
-        fuzz-unit-file/oss-fuzz-6897
4bff0a
-        fuzz-unit-file/oss-fuzz-6897-evverx
4bff0a
-        fuzz-unit-file/oss-fuzz-6908
4bff0a
-        fuzz-unit-file/oss-fuzz-6917
4bff0a
-        fuzz-unit-file/oss-fuzz-6977
4bff0a
-        fuzz-unit-file/oss-fuzz-6977-unminimized
4bff0a
-        fuzz-unit-file/oss-fuzz-7004
4bff0a
-        fuzz-unit-file/oss-fuzz-8064
4bff0a
-        fuzz-unit-file/oss-fuzz-8827
4bff0a
-        fuzz-unit-file/oss-fuzz-10007
4bff0a
-'''.split()
4bff0a
+if git.found()
4bff0a
+        out = run_command(
4bff0a
+                git,
4bff0a
+                '--git-dir=@0@/.git'.format(meson.source_root()),
4bff0a
+                 'ls-files', ':/test/fuzz/*/*')
4bff0a
+else
4bff0a
+        out = run_command(
4bff0a
+                'sh', '-c', 'ls @0@/*/*'.format(meson.current_source_dir()))
4bff0a
+endif
4bff0a
+
4bff0a
+fuzz_regression_tests = []
4bff0a
+foreach p : out.stdout().split()
4bff0a
+        # Remove the last entry which is ''.
4bff0a
+        #
4bff0a
+        # Also, backslashes get mangled, so skip test. See
4bff0a
+        # https://github.com/mesonbuild/meson/issues/1564.
4bff0a
+        if not p.contains('\\')
4bff0a
+                fuzz_regression_tests += p
4bff0a
+        endif
4bff0a
+endforeach