]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
Avoid ifdefs in trace categories
authorTomas Mraz <tomas@openssl.org>
Thu, 15 Dec 2022 10:45:48 +0000 (11:45 +0100)
committerTomas Mraz <tomas@openssl.org>
Thu, 22 Dec 2022 10:33:48 +0000 (11:33 +0100)
The trace code assumes all categories are present and
the category numbers are equal to the index in the table.

Fixes #19915

Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/19917)

crypto/trace.c
include/openssl/trace.h

index 0d58932825626c37f9f78c7eea8256f7c299fc2c..74dbd525a5174196c8ca1fe325b583306d9d3aae 100644 (file)
@@ -118,17 +118,16 @@ struct trace_category_st {
 };
 #define TRACE_CATEGORY_(name)       { #name, OSSL_TRACE_CATEGORY_##name }
 
-static const struct trace_category_st trace_categories[] = {
+static const struct trace_category_st
+    trace_categories[OSSL_TRACE_CATEGORY_NUM] = {
     TRACE_CATEGORY_(ALL),
     TRACE_CATEGORY_(TRACE),
     TRACE_CATEGORY_(INIT),
     TRACE_CATEGORY_(TLS),
     TRACE_CATEGORY_(TLS_CIPHER),
     TRACE_CATEGORY_(CONF),
-#ifndef OPENSSL_NO_ENGINE
     TRACE_CATEGORY_(ENGINE_TABLE),
     TRACE_CATEGORY_(ENGINE_REF_COUNT),
-#endif
     TRACE_CATEGORY_(PKCS5V2),
     TRACE_CATEGORY_(PKCS12_KEYGEN),
     TRACE_CATEGORY_(PKCS12_DECRYPT),
@@ -144,22 +143,16 @@ static const struct trace_category_st trace_categories[] = {
 
 const char *OSSL_trace_get_category_name(int num)
 {
-    size_t i;
-
+    if (num < 0 || (size_t)num >= OSSL_NELEM(trace_categories))
+        return NULL;
     /*
      * Partial check that OSSL_TRACE_CATEGORY_... macros
      * are synced with trace_categories array
      */
-#ifndef OPENSSL_NO_ENGINE
-    if (!ossl_assert(OSSL_TRACE_CATEGORY_NUM == OSSL_NELEM(trace_categories)))
+    if (!ossl_assert(trace_categories[num].name != NULL)
+        || !ossl_assert(trace_categories[num].num == num))
         return NULL;
-#endif
-
-    for (i = 0; i < OSSL_NELEM(trace_categories); i++)
-        if (trace_categories[i].num == num)
-            return trace_categories[i].name;
-
-    return NULL; /* not found */
+    return trace_categories[num].name;
 }
 
 int OSSL_trace_get_category_num(const char *name)
index 059644299e4cf68d3e1e8b01779e3ec4069f9377..23f90c65aaa74028a1b5217d14ddc3c4fd246a86 100644 (file)
@@ -43,10 +43,8 @@ extern "C" {
 # define OSSL_TRACE_CATEGORY_TLS                 3
 # define OSSL_TRACE_CATEGORY_TLS_CIPHER          4
 # define OSSL_TRACE_CATEGORY_CONF                5
-# ifndef OPENSSL_NO_ENGINE
-#  define OSSL_TRACE_CATEGORY_ENGINE_TABLE       6
-#  define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT   7
-# endif
+# define OSSL_TRACE_CATEGORY_ENGINE_TABLE        6
+# define OSSL_TRACE_CATEGORY_ENGINE_REF_COUNT    7
 # define OSSL_TRACE_CATEGORY_PKCS5V2             8
 # define OSSL_TRACE_CATEGORY_PKCS12_KEYGEN       9
 # define OSSL_TRACE_CATEGORY_PKCS12_DECRYPT     10