aboutsummaryrefslogtreecommitdiff
path: root/src/lib/trace
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2020-03-11 12:12:28 -0400
committerDavid Goulet <dgoulet@torproject.org>2020-07-08 11:11:58 -0400
commitb049cc3ace18dd42493ca768cf4636dfd89569fc (patch)
treea70016f891b7025b497637e4bbd9df3a2dd6e6b3 /src/lib/trace
parent3604d86a016b6202a5864a81f46addc087658b8c (diff)
downloadtor-b049cc3ace18dd42493ca768cf4636dfd89569fc.tar.gz
tor-b049cc3ace18dd42493ca768cf4636dfd89569fc.zip
trace: Emit a warning if tracing is built in
Built in tracing should _not_ be run if it was not set on purpose. Warn as loud as we can in order to inform the user that they are running a version with tracing capabilities built in. This commit also adds a subsys stub because utlimately the logging will happen in the init phase but because the default log file is not set in the sys_logging init function, the stub is not useful for now. Signed-off-by: David Goulet <dgoulet@torproject.org>
Diffstat (limited to 'src/lib/trace')
-rw-r--r--src/lib/trace/include.am4
-rw-r--r--src/lib/trace/trace.h21
-rw-r--r--src/lib/trace/trace_stub.c19
-rw-r--r--src/lib/trace/trace_sys.c5
-rw-r--r--src/lib/trace/trace_sys.h8
5 files changed, 56 insertions, 1 deletions
diff --git a/src/lib/trace/include.am b/src/lib/trace/include.am
index 8440331325..6fe1365652 100644
--- a/src/lib/trace/include.am
+++ b/src/lib/trace/include.am
@@ -26,6 +26,10 @@ if USE_TRACING_INSTRUMENTATION_LTTNG
include src/lib/trace/lttng/include.am
endif
+if USE_TRACING
src_lib_libtor_trace_a_SOURCES = $(LIBTOR_TRACE_A_SOURCES)
+else
+src_lib_libtor_trace_a_SOURCES = src/lib/trace/trace_stub.c
+endif
noinst_HEADERS+= $(TRACEHEADERS)
diff --git a/src/lib/trace/trace.h b/src/lib/trace/trace.h
index 94cbbc1e48..22589dbe94 100644
--- a/src/lib/trace/trace.h
+++ b/src/lib/trace/trace.h
@@ -9,7 +9,28 @@
#ifndef TOR_LIB_TRACE_TRACE_H
#define TOR_LIB_TRACE_TRACE_H
+#include "orconfig.h"
+
void tor_trace_init(void);
void tor_trace_free_all(void);
+#ifdef HAVE_TRACING
+
+#include "lib/log/log.h"
+
+static inline void
+tracing_log_warning(void)
+{
+ log_warn(LD_GENERAL,
+ "Tracing capabilities have been built in. If this is NOT on "
+ "purpose, your tor is NOT safe to run.");
+}
+
+#else
+
+/* NOP it. */
+#define tracing_log_warning()
+
+#endif /* defined(HAVE_TRACING) */
+
#endif /* !defined(TOR_LIB_TRACE_TRACE_H) */
diff --git a/src/lib/trace/trace_stub.c b/src/lib/trace/trace_stub.c
new file mode 100644
index 0000000000..9043efe360
--- /dev/null
+++ b/src/lib/trace/trace_stub.c
@@ -0,0 +1,19 @@
+/* Copyright (c) 2020, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+/**
+ * \file trace_stub.c
+ * \brief Stub declaratinos for use when trace library is disabled.
+ **/
+
+#include "lib/subsys/subsys.h"
+
+#include "lib/trace/trace_sys.h"
+
+const subsys_fns_t sys_tracing = {
+ SUBSYS_DECLARE_LOCATION(),
+
+ .name = "tracing",
+ .supported = false,
+ .level = TRACE_SUBSYS_LEVEL,
+};
diff --git a/src/lib/trace/trace_sys.c b/src/lib/trace/trace_sys.c
index d6e59f4c3d..2ba0258407 100644
--- a/src/lib/trace/trace_sys.c
+++ b/src/lib/trace/trace_sys.c
@@ -25,9 +25,12 @@ subsys_tracing_shutdown(void)
}
const subsys_fns_t sys_tracing = {
+ SUBSYS_DECLARE_LOCATION(),
+
.name = "tracing",
.supported = true,
- .level = -85,
+ .level = TRACE_SUBSYS_LEVEL,
+
.initialize = subsys_tracing_initialize,
.shutdown = subsys_tracing_shutdown,
};
diff --git a/src/lib/trace/trace_sys.h b/src/lib/trace/trace_sys.h
index e9c97c08fb..d4da5a9701 100644
--- a/src/lib/trace/trace_sys.h
+++ b/src/lib/trace/trace_sys.h
@@ -11,4 +11,12 @@
extern const struct subsys_fns_t sys_tracing;
+/**
+ * Subsystem level for the tracing system.
+ *
+ * Defined here so that it can be shared between the real and stub
+ * definitions.
+ **/
+#define TRACE_SUBSYS_LEVEL (-85)
+
#endif /* !defined(TOR_TRACE_SYS_H) */