diff options
author | Dr. David von Oheimb <David.von.Oheimb@siemens.com> | 2022-07-01 22:09:18 +0200 |
---|---|---|
committer | Dr. David von Oheimb <dev@ddvo.net> | 2023-01-26 09:16:51 +0100 |
commit | 0243e821473ef6dedc8d5f3d6ebefc1b06f2e46f (patch) | |
tree | cd39a1120c206dbcf8b19676a17447291403f3f7 /doc | |
parent | 114d99b46bfb212ffc510865df317ca2c1542623 (diff) | |
download | openssl-new-0243e821473ef6dedc8d5f3d6ebefc1b06f2e46f.tar.gz |
add OSSL_TRACE_STRING(), OSSL_TRACE_STRING_MAX, and OSSL_trace_string()
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: David von Oheimb <david.von.oheimb@siemens.com>
(Merged from https://github.com/openssl/openssl/pull/18704)
Diffstat (limited to 'doc')
-rw-r--r-- | doc/man3/OSSL_trace_enabled.pod | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/doc/man3/OSSL_trace_enabled.pod b/doc/man3/OSSL_trace_enabled.pod index 58db2cc9fd..1cc45b11c7 100644 --- a/doc/man3/OSSL_trace_enabled.pod +++ b/doc/man3/OSSL_trace_enabled.pod @@ -7,6 +7,7 @@ OSSL_TRACE_BEGIN, OSSL_TRACE_END, OSSL_TRACE_CANCEL, OSSL_TRACE, OSSL_TRACE1, OSSL_TRACE2, OSSL_TRACE3, OSSL_TRACE4, OSSL_TRACE5, OSSL_TRACE6, OSSL_TRACE7, OSSL_TRACE8, OSSL_TRACE9, OSSL_TRACEV, +OSSL_TRACE_STRING, OSSL_TRACE_STRING_MAX, OSSL_trace_string, OSSL_TRACE_ENABLED - OpenSSL Tracing API @@ -38,6 +39,11 @@ OSSL_TRACE_ENABLED OSSL_TRACE2(category, format, arg1, arg2) ... OSSL_TRACE9(category, format, arg1, ..., arg9) + OSSL_TRACE_STRING(category, text, full, data, len) + + #define OSSL_TRACE_STRING_MAX 80 + int OSSL_trace_string(BIO *out, int text, int full, + const unsigned char *data, size_t size); /* check whether a trace category is enabled */ if (OSSL_TRACE_ENABLED(category)) { @@ -102,6 +108,12 @@ is I<mandatory>. The result of trying to produce tracing output outside of such sections is undefined. +OSSL_trace_string() outputs I<data> of length I<size> as a string on BIO I<out>. +If I<text> is 0, the function masks any included control characters apart from +newlines and makes sure for nonempty input that the output ends with a newline. +Unless I<full> is nonzero, the length is limited (with a suitable warning) +to B<OSSL_TRACE_STRING_MAX> characters, which currently is 80. + =head2 Macros There are a number of convenience macros defined, to make tracing @@ -165,13 +177,22 @@ printf-style trace output with n format field arguments (n=1,...,9). It expands to: OSSL_TRACE_BEGIN(category) { - BIO_printf(trc_out, format, arg1, ..., argN) + BIO_printf(trc_out, format, arg1, ..., argN); } OSSL_TRACE_END(category) Internally, all one-shot macros are implemented using a generic OSSL_TRACEV() macro, since C90 does not support variadic macros. This helper macro has a rather weird synopsis and should not be used directly. +The macro call C<OSSL_TRACE_STRING(category, text, full, data, len)> +outputs I<data> of length I<size> as a string +if tracing for the given I<category> is enabled. +It expands to: + + OSSL_TRACE_BEGIN(category) { + OSSL_trace_string(trc_out, text, full, data, len); + } OSSL_TRACE_END(category) + The OSSL_TRACE_ENABLED() macro can be used to conditionally execute some code only if a specific trace category is enabled. In some situations this is simpler than entering a trace section using @@ -279,6 +300,8 @@ operational and enabled, otherwise 0. OSSL_trace_begin() returns a B<BIO> pointer if the given I<type> is enabled, otherwise NULL. +OSSL_trace_string() returns the number of characters emitted, or -1 on error. + =head1 SEE ALSO L<OSSL_trace_set_channel(3)>, L<OSSL_trace_set_callback(3)> @@ -287,6 +310,9 @@ L<OSSL_trace_set_channel(3)>, L<OSSL_trace_set_callback(3)> The OpenSSL Tracing API was added in OpenSSL 3.0. +OSSL_TRACE_STRING(), OSSL_TRACE_STRING_MAX, and OSSL_trace_string +were added in OpenSSL 3.2. + =head1 COPYRIGHT Copyright 2019-2021 The OpenSSL Project Authors. All Rights Reserved. |