From 5fb5aea763dbc6068a2e577d1075812af1dce22d Mon Sep 17 00:00:00 2001
From: Dimitri Papadopoulos
 <3234522+DimitriPapadopoulos@users.noreply.github.com>
Date: Fri, 17 Apr 2020 12:20:19 +0200
Subject: [PATCH] Check return value of pthread_ functions

---
 src/log.c | 27 ++++++++++++++++++++++-----
 1 file changed, 22 insertions(+), 5 deletions(-)

diff --git a/src/log.c b/src/log.c
index 0aa21e9..36dbaf9 100644
--- a/src/log.c
+++ b/src/log.c
@@ -52,15 +52,25 @@ static const struct log_param_s log_params[OFV_LOG_DEBUG_ALL + 1] = {
 void init_logging(void)
 {
 	pthread_mutexattr_t mutexattr;
+	int e;
 
 	loglevel = OFV_LOG_INFO;
 	is_a_tty = isatty(STDOUT_FILENO);
 
-	pthread_mutexattr_init(&mutexattr);
+	e = pthread_mutexattr_init(&mutexattr);
+	if (e)
+		fprintf(stderr, "ERROR:  pthread_mutexattr_init: %s\n",
+		        strerror(e));
 #ifdef HAVE_PTHREAD_MUTEXATTR_SETROBUST
-	pthread_mutexattr_setrobust(&mutexattr, PTHREAD_MUTEX_ROBUST);
+	e = pthread_mutexattr_setrobust(&mutexattr, PTHREAD_MUTEX_ROBUST);
+	if (e)
+		fprintf(stderr, "ERROR:  pthread_mutexattr_setrobust: %s\n",
+		        strerror(e));
 #endif
-	pthread_mutex_init(&mutex, &mutexattr);
+	e = pthread_mutex_init(&mutex, &mutexattr);
+	if (e)
+		fprintf(stderr, "ERROR:  pthread_mutex_init: %s\n",
+		        strerror(e));
 }
 
 void set_syslog(int use_syslog)
@@ -86,8 +96,12 @@ void do_log(int verbosity, const char *format, ...)
 {
 	va_list args;
 	const struct log_param_s *lp = NULL;
+	int e;
 
-	pthread_mutex_lock(&mutex);
+	e = pthread_mutex_lock(&mutex);
+	if (e)
+		fprintf(stderr, "ERROR:  pthread_mutex_lock: %s\n",
+		        strerror(e));
 
 	// Use sane default if wrong verbosity specified
 	if (verbosity > OFV_LOG_DEBUG_ALL || verbosity < 0)
@@ -111,7 +125,10 @@ void do_log(int verbosity, const char *format, ...)
 		fflush(stdout);
 	}
 
-	pthread_mutex_unlock(&mutex);
+	e = pthread_mutex_unlock(&mutex);
+	if (e)
+		fprintf(stderr, "ERROR:  pthread_mutex_unlock: %s\n",
+		        strerror(e));
 }
 
 void do_log_packet(const char *prefix, size_t len, const uint8_t *packet)
-- 
GitLab