From: Dr. David von Oheimb Date: Wed, 9 Oct 2024 20:05:19 +0000 (+0200) Subject: TRACE: automatically respect disabled categories X-Git-Tag: openssl-3.0.16~88 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90c7d03c4a07e357763e40378dcdb65a6d7e3759;p=thirdparty%2Fopenssl.git TRACE: automatically respect disabled categories by fixing OSSL_trace_begin() to return NULL when given category is not enabled Reviewed-by: Tom Cosgrove Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/25652) (cherry picked from commit 72d3e9bac41302e5bc00db1bef014b0ca810d2cf) --- diff --git a/crypto/trace.c b/crypto/trace.c index 3df9b5a51e9..90a6350beba 100644 --- a/crypto/trace.c +++ b/crypto/trace.c @@ -473,7 +473,7 @@ BIO *OSSL_trace_begin(int category) char *prefix = NULL; category = ossl_trace_get_category(category); - if (category < 0) + if (category < 0 || !OSSL_trace_enabled(category)) return NULL; channel = trace_channels[category].bio; diff --git a/doc/man3/OSSL_trace_enabled.pod b/doc/man3/OSSL_trace_enabled.pod index f9c9dffd8c6..bad5b151535 100644 --- a/doc/man3/OSSL_trace_enabled.pod +++ b/doc/man3/OSSL_trace_enabled.pod @@ -88,9 +88,10 @@ but rather uses a set of convenience macros, see the L section below. OSSL_trace_enabled() can be used to check if tracing for the given I is enabled. -OSSL_trace_begin() is used to starts a tracing section, and get the -channel for the given I in form of a BIO. +OSSL_trace_begin() is used to start a tracing section, +and get the channel for the given I in form of a BIO. This BIO can only be used for output. +The pointer returned is NULL if the category is invalid or not enabled. OSSL_trace_end() is used to end a tracing section. @@ -187,6 +188,9 @@ expands to =head1 NOTES +It is not needed to guard trace output function calls like +I by I. + If producing the trace output requires carrying out auxiliary calculations, this auxiliary code should be placed inside a conditional block which is executed only if the trace category is enabled.