]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Check that the log mutex is initialised before trying to lock or unlock it
authorteor (Tim Wilson-Brown) <teor2345@gmail.com>
Fri, 5 Feb 2016 03:08:58 +0000 (14:08 +1100)
committerteor (Tim Wilson-Brown) <teor2345@gmail.com>
Fri, 5 Feb 2016 03:08:58 +0000 (14:08 +1100)
src/common/log.c

index 4a8a7b1165cecf938a988c5b894ab4a4097f4e43..f71583fd63006770ba7455398d3a44dd082d519d 100644 (file)
@@ -149,10 +149,14 @@ static int pretty_fn_has_parens = 0;
 
 /** Lock the log_mutex to prevent others from changing the logfile_t list */
 #define LOCK_LOGS() STMT_BEGIN                                          \
+  tor_assert(log_mutex_initialized);                                    \
   tor_mutex_acquire(&log_mutex);                                        \
   STMT_END
 /** Unlock the log_mutex */
-#define UNLOCK_LOGS() STMT_BEGIN tor_mutex_release(&log_mutex); STMT_END
+#define UNLOCK_LOGS() STMT_BEGIN                                        \
+  tor_assert(log_mutex_initialized);                                    \
+  tor_mutex_release(&log_mutex);                                        \
+  STMT_END
 
 /** What's the lowest log level anybody cares about?  Checking this lets us
  * bail out early from log_debug if we aren't debugging.  */
@@ -482,6 +486,8 @@ logv,(int severity, log_domain_mask_t domain, const char *funcname,
   /* check that severity is sane.  Overrunning the masks array leads to
    * interesting and hard to diagnose effects */
   assert(severity >= LOG_ERR && severity <= LOG_DEBUG);
+  /* check that we've initialised the log mutex before we try to lock it */
+  assert(log_mutex_initialized);
   LOCK_LOGS();
 
   if ((! (domain & LD_NOCB)) && smartlist_len(pending_cb_messages))