From: Umer Saleem Date: Thu, 20 Jan 2022 14:29:36 +0000 (+0500) Subject: Fix for a race condition in journal_write X-Git-Tag: v1.8.0~11^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F1153%2Fhead;p=thirdparty%2Frrdtool-1.x.git 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 --- 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;