]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
In tor_tls_get_my_certs(), set cert ptrs even on failure
authorNick Mathewson <nickm@torproject.org>
Tue, 18 Sep 2018 19:18:52 +0000 (15:18 -0400)
committerNick Mathewson <nickm@torproject.org>
Sun, 14 Oct 2018 19:25:16 +0000 (15:25 -0400)
Nothing should ever look at them on failure, but in some cases,
the unit tests don't check for failure, and then GCC-LTO freaks out.

Fixes part of 27772.

src/lib/tls/tortls.c

index 3ae3a1a09685bb12d01b9d8fec912cfa56707c66..56f70bc3714a5ac514b1adf067af20e256925398 100644 (file)
@@ -71,13 +71,19 @@ tor_tls_get_my_certs(int server,
                      const tor_x509_cert_t **id_cert_out)
 {
   tor_tls_context_t *ctx = tor_tls_context_get(server);
-  if (! ctx)
-    return -1;
+  int rv = -1;
+  const tor_x509_cert_t *link_cert = NULL;
+  const tor_x509_cert_t *id_cert = NULL;
+  if (ctx) {
+    rv = 0;
+    link_cert = server ? ctx->my_link_cert : ctx->my_auth_cert;
+    id_cert = ctx->my_id_cert;
+  }
   if (link_cert_out)
-    *link_cert_out = server ? ctx->my_link_cert : ctx->my_auth_cert;
+    *link_cert_out = link_cert;
   if (id_cert_out)
-    *id_cert_out = ctx->my_id_cert;
-  return 0;
+    *id_cert_out = id_cert;
+  return rv;
 }
 
 /**