From: Yu Watanabe Date: Thu, 5 Oct 2023 09:20:40 +0000 (+0900) Subject: journal-file-util: do not fail when journal_file_set_offline() called more than once X-Git-Tag: v255-rc1~308^2~2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=46e98dfcc7563dd16a2db3b05bb3e803c27f40ea;p=thirdparty%2Fsystemd.git journal-file-util: do not fail when journal_file_set_offline() called more than once Previously, if journal_file_set_offline() is called twice with 'wait = false', the second call triggered segfaults, as the offline_state is OFFLINE_DONE, and journal_file_set_offline_thread_join() tries to call pthread_join() with NULL. --- diff --git a/src/shared/journal-file-util.c b/src/shared/journal-file-util.c index 90737fb8a85..ff32a1aac83 100644 --- a/src/shared/journal-file-util.c +++ b/src/shared/journal-file-util.c @@ -346,9 +346,14 @@ int journal_file_set_offline(JournalFile *f, bool wait) { /* Initiate a new offline. */ f->offline_state = OFFLINE_SYNCING; - if (wait) /* Without using a thread if waiting. */ + if (wait) { + /* Without using a thread if waiting. */ journal_file_set_offline_internal(f); - else { + + assert(f->offline_state == OFFLINE_DONE); + f->offline_state = OFFLINE_JOINED; + + } else { sigset_t ss, saved_ss; int k;