From ca9900e34d42123537655cb763367c550e071fc4 Mon Sep 17 00:00:00 2001 From: Umer Saleem Date: Thu, 20 Jan 2022 19:29:36 +0500 Subject: [PATCH] Fix for a race condition in journal_write There is a race condition in journal_write() where journal_lock is being acquired after checking whether journal_fh is NULL or not. journal_fh is a static file handle that can be set to NULL by any other thread, while current thread is blocked by pthread_mutex_lock(). This commit fixes this race condition. Signed-off-by: Umer Saleem --- src/rrd_daemon.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rrd_daemon.c b/src/rrd_daemon.c index 3ad3a66f..cf125476 100644 --- a/src/rrd_daemon.c +++ b/src/rrd_daemon.c @@ -3412,10 +3412,12 @@ static int journal_write( { /* {{{ */ int chars; - if (journal_fh == NULL) + pthread_mutex_lock(&journal_lock); + if (journal_fh == NULL) { + pthread_mutex_unlock(&journal_lock); return 0; + } - pthread_mutex_lock(&journal_lock); chars = fprintf(journal_fh, "%s %s\n", cmd, args); journal_size += chars; -- 2.47.2