testutil/init.c rename to testutil/testutil_init.c
authorPatrick Steuer <patrick.steuer@de.ibm.com>
Wed, 13 Nov 2019 17:39:51 +0000 (18:39 +0100)
committerPatrick Steuer <patrick.steuer@de.ibm.com>
Thu, 14 Nov 2019 19:36:38 +0000 (20:36 +0100)
Avoid conflicts with some linkers.

Signed-off-by: Patrick Steuer <patrick.steuer@de.ibm.com>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/10439)

test/build.info
test/testutil/init.c [deleted file]
test/testutil/testutil_init.c [new file with mode: 0644]

index 468f80dbf9f1248ed600bb7b5e6bc2cdfba1d961..e4fff15883a06d447172dad697bbc311eaf2d175 100644 (file)
@@ -21,7 +21,7 @@ IF[{- !$disabled{tests} -}]
   SOURCE[libtestutil.a]=testutil/basic_output.c testutil/output_helpers.c \
           testutil/driver.c testutil/tests.c testutil/cb.c testutil/stanza.c \
           testutil/format_output.c testutil/tap_bio.c \
-          testutil/test_cleanup.c testutil/main.c testutil/init.c \
+          testutil/test_cleanup.c testutil/main.c testutil/testutil_init.c \
           testutil/options.c testutil/test_options.c \
           testutil/apps_mem.c testutil/random.c $LIBAPPSSRC
   INCLUDE[libtestutil.a]=../include ../apps/include ..
diff --git a/test/testutil/init.c b/test/testutil/init.c
deleted file mode 100644 (file)
index 7c6041a..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
- *
- * Licensed under the Apache License 2.0 (the "License").  You may not use
- * this file except in compliance with the License.  You can obtain a copy
- * in the file LICENSE in the source distribution or at
- * https://www.openssl.org/source/license.html
- */
-
-#include <string.h>
-#include <openssl/opensslconf.h>
-#include <openssl/trace.h>
-#include "apps.h"
-#include "../testutil.h"
-
-#ifndef OPENSSL_NO_TRACE
-typedef struct tracedata_st {
-    BIO *bio;
-    unsigned int ingroup:1;
-} tracedata;
-
-static size_t internal_trace_cb(const char *buf, size_t cnt,
-                                int category, int cmd, void *vdata)
-{
-    int ret = 0;
-    tracedata *trace_data = vdata;
-    char buffer[256], *hex;
-    CRYPTO_THREAD_ID tid;
-
-    switch (cmd) {
-    case OSSL_TRACE_CTRL_BEGIN:
-        trace_data->ingroup = 1;
-
-        tid = CRYPTO_THREAD_get_current_id();
-        hex = OPENSSL_buf2hexstr((const unsigned char *)&tid, sizeof(tid));
-        BIO_snprintf(buffer, sizeof(buffer), "TRACE[%s]:%s: ",
-                     hex, OSSL_trace_get_category_name(category));
-        OPENSSL_free(hex);
-        BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX,
-                 strlen(buffer), buffer);
-        break;
-    case OSSL_TRACE_CTRL_WRITE:
-        ret = BIO_write(trace_data->bio, buf, cnt);
-        break;
-    case OSSL_TRACE_CTRL_END:
-        trace_data->ingroup = 0;
-
-        BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX, 0, NULL);
-        break;
-    }
-
-    return ret < 0 ? 0 : ret;
-}
-
-DEFINE_STACK_OF(tracedata)
-static STACK_OF(tracedata) *trace_data_stack;
-
-static void tracedata_free(tracedata *data)
-{
-    BIO_free_all(data->bio);
-    OPENSSL_free(data);
-}
-
-static STACK_OF(tracedata) *trace_data_stack;
-
-static void cleanup_trace(void)
-{
-    sk_tracedata_pop_free(trace_data_stack, tracedata_free);
-}
-
-static void setup_trace_category(int category)
-{
-    BIO *channel;
-    tracedata *trace_data;
-
-    if (OSSL_trace_enabled(category))
-        return;
-
-    channel = BIO_push(BIO_new(apps_bf_prefix()),
-                       BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT));
-    trace_data = OPENSSL_zalloc(sizeof(*trace_data));
-
-    if (trace_data == NULL
-        || (trace_data->bio = channel) == NULL
-        || OSSL_trace_set_callback(category, internal_trace_cb,
-                                   trace_data) == 0
-        || sk_tracedata_push(trace_data_stack, trace_data) == 0) {
-
-        fprintf(stderr,
-                "warning: unable to setup trace callback for category '%s'.\n",
-                OSSL_trace_get_category_name(category));
-
-        OSSL_trace_set_callback(category, NULL, NULL);
-        BIO_free_all(channel);
-    }
-}
-
-static void setup_trace(const char *str)
-{
-    char *val;
-
-    /*
-     * We add this handler as early as possible to ensure it's executed
-     * as late as possible, i.e. after the TRACE code has done its cleanup
-     * (which happens last in OPENSSL_cleanup).
-     */
-    atexit(cleanup_trace);
-
-    trace_data_stack = sk_tracedata_new_null();
-    val = OPENSSL_strdup(str);
-
-    if (val != NULL) {
-        char *valp = val;
-        char *item;
-
-        for (valp = val; (item = strtok(valp, ",")) != NULL; valp = NULL) {
-            int category = OSSL_trace_get_category_num(item);
-
-            if (category == OSSL_TRACE_CATEGORY_ALL) {
-                while (++category < OSSL_TRACE_CATEGORY_NUM)
-                    setup_trace_category(category);
-                break;
-            } else if (category > 0) {
-                setup_trace_category(category);
-            } else {
-                fprintf(stderr,
-                        "warning: unknown trace category: '%s'.\n", item);
-            }
-        }
-    }
-
-    OPENSSL_free(val);
-}
-#endif /* OPENSSL_NO_TRACE */
-
-int global_init(void)
-{
-#ifndef OPENSSL_NO_TRACE
-    setup_trace(getenv("OPENSSL_TRACE"));
-#endif
-
-    return 1;
-}
diff --git a/test/testutil/testutil_init.c b/test/testutil/testutil_init.c
new file mode 100644 (file)
index 0000000..7c6041a
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
+ *
+ * Licensed under the Apache License 2.0 (the "License").  You may not use
+ * this file except in compliance with the License.  You can obtain a copy
+ * in the file LICENSE in the source distribution or at
+ * https://www.openssl.org/source/license.html
+ */
+
+#include <string.h>
+#include <openssl/opensslconf.h>
+#include <openssl/trace.h>
+#include "apps.h"
+#include "../testutil.h"
+
+#ifndef OPENSSL_NO_TRACE
+typedef struct tracedata_st {
+    BIO *bio;
+    unsigned int ingroup:1;
+} tracedata;
+
+static size_t internal_trace_cb(const char *buf, size_t cnt,
+                                int category, int cmd, void *vdata)
+{
+    int ret = 0;
+    tracedata *trace_data = vdata;
+    char buffer[256], *hex;
+    CRYPTO_THREAD_ID tid;
+
+    switch (cmd) {
+    case OSSL_TRACE_CTRL_BEGIN:
+        trace_data->ingroup = 1;
+
+        tid = CRYPTO_THREAD_get_current_id();
+        hex = OPENSSL_buf2hexstr((const unsigned char *)&tid, sizeof(tid));
+        BIO_snprintf(buffer, sizeof(buffer), "TRACE[%s]:%s: ",
+                     hex, OSSL_trace_get_category_name(category));
+        OPENSSL_free(hex);
+        BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX,
+                 strlen(buffer), buffer);
+        break;
+    case OSSL_TRACE_CTRL_WRITE:
+        ret = BIO_write(trace_data->bio, buf, cnt);
+        break;
+    case OSSL_TRACE_CTRL_END:
+        trace_data->ingroup = 0;
+
+        BIO_ctrl(trace_data->bio, PREFIX_CTRL_SET_PREFIX, 0, NULL);
+        break;
+    }
+
+    return ret < 0 ? 0 : ret;
+}
+
+DEFINE_STACK_OF(tracedata)
+static STACK_OF(tracedata) *trace_data_stack;
+
+static void tracedata_free(tracedata *data)
+{
+    BIO_free_all(data->bio);
+    OPENSSL_free(data);
+}
+
+static STACK_OF(tracedata) *trace_data_stack;
+
+static void cleanup_trace(void)
+{
+    sk_tracedata_pop_free(trace_data_stack, tracedata_free);
+}
+
+static void setup_trace_category(int category)
+{
+    BIO *channel;
+    tracedata *trace_data;
+
+    if (OSSL_trace_enabled(category))
+        return;
+
+    channel = BIO_push(BIO_new(apps_bf_prefix()),
+                       BIO_new_fp(stderr, BIO_NOCLOSE | BIO_FP_TEXT));
+    trace_data = OPENSSL_zalloc(sizeof(*trace_data));
+
+    if (trace_data == NULL
+        || (trace_data->bio = channel) == NULL
+        || OSSL_trace_set_callback(category, internal_trace_cb,
+                                   trace_data) == 0
+        || sk_tracedata_push(trace_data_stack, trace_data) == 0) {
+
+        fprintf(stderr,
+                "warning: unable to setup trace callback for category '%s'.\n",
+                OSSL_trace_get_category_name(category));
+
+        OSSL_trace_set_callback(category, NULL, NULL);
+        BIO_free_all(channel);
+    }
+}
+
+static void setup_trace(const char *str)
+{
+    char *val;
+
+    /*
+     * We add this handler as early as possible to ensure it's executed
+     * as late as possible, i.e. after the TRACE code has done its cleanup
+     * (which happens last in OPENSSL_cleanup).
+     */
+    atexit(cleanup_trace);
+
+    trace_data_stack = sk_tracedata_new_null();
+    val = OPENSSL_strdup(str);
+
+    if (val != NULL) {
+        char *valp = val;
+        char *item;
+
+        for (valp = val; (item = strtok(valp, ",")) != NULL; valp = NULL) {
+            int category = OSSL_trace_get_category_num(item);
+
+            if (category == OSSL_TRACE_CATEGORY_ALL) {
+                while (++category < OSSL_TRACE_CATEGORY_NUM)
+                    setup_trace_category(category);
+                break;
+            } else if (category > 0) {
+                setup_trace_category(category);
+            } else {
+                fprintf(stderr,
+                        "warning: unknown trace category: '%s'.\n", item);
+            }
+        }
+    }
+
+    OPENSSL_free(val);
+}
+#endif /* OPENSSL_NO_TRACE */
+
+int global_init(void)
+{
+#ifndef OPENSSL_NO_TRACE
+    setup_trace(getenv("OPENSSL_TRACE"));
+#endif
+
+    return 1;
+}