Bläddra i källkod

Merge remote-tracking branch 'teor/bug16115-minor-fixes'

Nick Mathewson 9 år sedan
förälder
incheckning
34edf17d88

+ 4 - 0
changes/bug16115-NULL-getinfo-onions

@@ -0,0 +1,4 @@
+  o Minor fixes (threads, comments):
+    - Check for NULL values in getinfo_helper_onions
+      Patch by "teor".
+      Fix on 915c7438a77e in Tor 0.2.7.1-alpha.

+ 4 - 0
changes/bug16115-init-var

@@ -0,0 +1,4 @@
+  o Minor fixes (threads, comments):
+    - Always initialise return value in compute_desc_id in rendcommon.c
+      Patch by "teor".
+      Fix on e6a581f126ba, released in 0.2.7.1-alpha.

+ 6 - 0
changes/bug16115-signing-key-NULL-check

@@ -0,0 +1,6 @@
+  o Minor fixes (threads, comments):
+    - Ensure signing_key is non-NULL before accessing one of its members
+      signing_key can be NULL in ed_key_init_from_file in routerkeys.c.
+      Discovered by clang 3.7 address sanitizer.
+      Patch by "teor".
+      Fix on c03694938ed0, not in any released version of Tor.

+ 6 - 0
changes/bug16115-spawn-comment

@@ -0,0 +1,6 @@
+  o Minor fixes (threads, comments):
+    - Fix an incorrect comment on spawn_func in compat_pthreads.c.
+      spawn_func calls pthread_create on unix, not fork
+      Patch by "teor".
+      Bugfix on unknown tor version (existing code split out of
+      compat.c into compat_pthreads.c in c2f0d52b7fb9 on 22 Sep 2013).

+ 6 - 0
changes/bug16115-undef-directive-in-macro

@@ -0,0 +1,6 @@
+  o Minor fixes (threads, comments):
+    - Remove undefined directive-in-macro in test_util_writepid
+      clang 3.7 complains that using a preprocessor directive inside
+      a macro invocation in test_util_writepid in test_util.c is undefined.
+      Patch by "teor".
+      Fix on 79e85313aa61 on 0.2.7.1-alpha.

+ 7 - 0
changes/bug16115-unused-find-cipher

@@ -0,0 +1,7 @@
+  o Minor fixes (threads, comments):
+    - Silence unused variable warnings in find_cipher_by_id
+      Unused variable warnings were still generated under some versions
+      of OpenSSL. Instead, make sure all variables are used under all
+      versions of OpenSSL.
+      Patch by "teor".
+      Fix on 496df21c89d1, not in any released version of tor.

+ 2 - 1
src/common/compat_pthreads.c

@@ -50,7 +50,8 @@ static pthread_attr_t attr_detached;
 static int threads_initialized = 0;
 
 /** Minimalist interface to run a void function in the background.  On
- * Unix calls fork, on win32 calls beginthread.  Returns -1 on failure.
+ * Unix calls pthread_create, on win32 calls beginthread.  Returns -1 on
+ * failure.
  * func should not return, but rather should call spawn_exit.
  *
  * NOTE: if <b>data</b> is used, it should not be allocated on the stack,

+ 2 - 0
src/common/tortls.c

@@ -1444,6 +1444,8 @@ find_cipher_by_id(const SSL *ssl, const SSL_METHOD *m, uint16_t cipher)
   }
 #endif
   (void) ssl;
+  (void) m;
+  (void) cipher;
   return 1; /* No way to search */
 }
 

+ 7 - 3
src/or/control.c

@@ -2193,7 +2193,7 @@ getinfo_helper_onions(control_connection_t *control_conn,
 {
   smartlist_t *onion_list = NULL;
 
-  if (!strcmp(question, "onions/current")) {
+  if (control_conn && !strcmp(question, "onions/current")) {
     onion_list = control_conn->ephemeral_onion_services;
   } else if (!strcmp(question, "onions/detached")) {
     onion_list = detached_onion_services;
@@ -2201,10 +2201,14 @@ getinfo_helper_onions(control_connection_t *control_conn,
     return 0;
   }
   if (!onion_list || smartlist_len(onion_list) == 0) {
-    *errmsg = "No onion services of the specified type.";
+    if (errmsg) {
+        *errmsg = "No onion services of the specified type.";
+    }
     return -1;
   }
-  *answer = smartlist_join_strings(onion_list, "\r\n", 0, NULL);
+  if (answer) {
+      *answer = smartlist_join_strings(onion_list, "\r\n", 0, NULL);
+  }
 
   return 0;
 }

+ 1 - 1
src/or/rendcommon.c

@@ -1417,7 +1417,7 @@ rend_data_dup(const rend_data_t *data)
 static int
 compute_desc_id(rend_data_t *rend_data)
 {
-  int ret;
+  int ret = 0;
   unsigned replica;
   time_t now = time(NULL);
 

+ 2 - 1
src/or/routerkeys.c

@@ -152,7 +152,8 @@ ed_key_init_from_file(const char *fname, uint32_t flags,
                         ED25519_PUBKEY_LEN)) {
     tor_log(severity, LD_OR, "Cert was for wrong key");
     bad_cert = 1;
-  } else if (tor_cert_checksig(cert, &signing_key->pubkey, now) < 0 &&
+  } else if (signing_key &&
+             tor_cert_checksig(cert, &signing_key->pubkey, now) < 0 &&
              (signing_key || cert->cert_expired)) {
     tor_log(severity, LD_OR, "Can't check certificate");
     bad_cert = 1;

+ 3 - 4
src/test/test_util.c

@@ -4319,13 +4319,12 @@ test_util_writepid(void *arg)
 
   int n = sscanf(contents, "%lu\n%c", &pid, &c);
   tt_int_op(n, OP_EQ, 1);
-  tt_uint_op(pid, OP_EQ,
+
 #ifdef _WIN32
-             _getpid()
+  tt_uint_op(pid, OP_EQ, _getpid());
 #else
-             getpid()
+  tt_uint_op(pid, OP_EQ, getpid());
 #endif
-             );
 
  done:
   tor_free(contents);