Don't fail when tracing is disabled
authorRichard Levitte <levitte@openssl.org>
Wed, 13 Mar 2019 23:39:28 +0000 (00:39 +0100)
committerRichard Levitte <levitte@openssl.org>
Thu, 14 Mar 2019 07:12:51 +0000 (08:12 +0100)
When tracing is disabled, don't generate errors, especially during
init.  Instead, just pretend the everything is fine.

Reviewed-by: Matthias St. Pierre <Matthias.St.Pierre@ncp-e.com>
(Merged from https://github.com/openssl/openssl/pull/8475)

crypto/trace.c

index 8ead944..c0b3ab2 100644 (file)
@@ -287,11 +287,11 @@ int ossl_trace_init(void)
 {
 #ifndef OPENSSL_NO_TRACE
     trace_lock = CRYPTO_THREAD_lock_new();
-    if (trace_lock != NULL)
-        return 1;
+    if (trace_lock == NULL)
+        return 0;
 #endif
 
-    return 0;
+    return 1;
 }
 
 void ossl_trace_cleanup(void)
@@ -321,15 +321,11 @@ int OSSL_trace_set_channel(int category, BIO *channel)
     if (category < 0 || category >= OSSL_TRACE_CATEGORY_NUM
         || !set_trace_data(category, &channel, NULL, NULL,
                            trace_attach_cb, trace_detach_cb))
-        goto err;
+        return 0;
 
     trace_channels[category].type = t_channel;
-    return 1;
-
- err:
 #endif
-
-    return 0;
+    return 1;
 }
 
 #ifndef OPENSSL_NO_TRACE
@@ -383,36 +379,41 @@ int OSSL_trace_set_callback(int category, OSSL_trace_cb callback, void *data)
         goto err;
 
     trace_channels[category].type = t_callback;
-    return 1;
+    goto done;
 
  err:
     BIO_free(channel);
     OPENSSL_free(trace_data);
-#endif
-
     return 0;
+ done:
+#endif
+    return 1;
 }
 
 int OSSL_trace_set_prefix(int category, const char *prefix)
 {
+    int rv = 1;
+
 #ifndef OPENSSL_NO_TRACE
     if (category >= 0 || category < OSSL_TRACE_CATEGORY_NUM)
         return set_trace_data(category, NULL, &prefix, NULL,
                               trace_attach_cb, trace_detach_cb);
+    rv = 0;
 #endif
-
-    return 0;
+    return rv;
 }
 
 int OSSL_trace_set_suffix(int category, const char *suffix)
 {
+    int rv = 1;
+
 #ifndef OPENSSL_NO_TRACE
     if (category >= 0 || category < OSSL_TRACE_CATEGORY_NUM)
         return set_trace_data(category, NULL, NULL, &suffix,
                               trace_attach_cb, trace_detach_cb);
+    rv = 0;
 #endif
-
-    return 0;
+    return rv;
 }
 
 #ifndef OPENSSL_NO_TRACE