From: Evgeny Vereshchagin Date: Thu, 20 Jan 2022 13:41:56 +0000 (+0000) Subject: tests: make fuzz-journal-remote less flaky X-Git-Tag: v251-rc1~490 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=381ccb5cc002dca7d0f3c2ac418b63ff265eefa6;p=thirdparty%2Fsystemd.git tests: make fuzz-journal-remote less flaky by always calling journal_remote_server_destroy, which resets global variables like journal_remote_server_global. It should prevent crashes like ``` Assertion 'journal_remote_server_global == NULL' failed at src/journal-remote/journal-remote.c:312, function int journal_remote_server_init(RemoteServer *, const char *, JournalWriteSplitMode, _Bool, _Bool)(). Aborting. AddressSanitizer:DEADLYSIGNAL ================================================================= ==24769==ERROR: AddressSanitizer: ABRT on unknown address 0x0539000060c1 (pc 0x7f23b4d5818b bp 0x7ffcbc4080c0 sp 0x7ffcbc407e70 T0) SCARINESS: 10 (signal) #0 0x7f23b4d5818b in raise /build/glibc-eX1tMB/glibc-2.31/sysdeps/unix/sysv/linux/raise.c:51:1 #1 0x7f23b4d37858 in abort /build/glibc-eX1tMB/glibc-2.31/stdlib/abort.c:79:7 #2 0x7f23b5731809 in log_assert_failed systemd/src/basic/log.c:866:9 ``` --- diff --git a/src/journal-remote/fuzz-journal-remote.c b/src/journal-remote/fuzz-journal-remote.c index 32c4e1819ca..1731b94bb8b 100644 --- a/src/journal-remote/fuzz-journal-remote.c +++ b/src/journal-remote/fuzz-journal-remote.c @@ -21,7 +21,7 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { _cleanup_(unlink_tempfilep) char name[] = "/tmp/fuzz-journal-remote.XXXXXX.journal"; _cleanup_close_ int fdout = -1; _cleanup_(sd_journal_closep) sd_journal *j = NULL; - RemoteServer s = {}; + _cleanup_(journal_remote_server_destroy) RemoteServer s = {}; int r; if (size <= 2) @@ -59,7 +59,6 @@ int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) { while (s.active) assert_se(journal_remote_handle_raw_source(NULL, fdin, 0, &s) >= 0); - journal_remote_server_destroy(&s); assert_se(close(fdin) < 0 && errno == EBADF); /* Check that the fd is closed already */ /* Out */