Don't fail when tracing is disabled

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)
This commit is contained in:
Richard Levitte 2019-03-14 00:39:28 +01:00
parent 81d61a62fa
commit d33d76168f

View File

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