diff options
author | David Goulet <dgoulet@torproject.org> | 2020-03-11 12:12:28 -0400 |
---|---|---|
committer | David Goulet <dgoulet@torproject.org> | 2020-07-08 11:11:58 -0400 |
commit | b049cc3ace18dd42493ca768cf4636dfd89569fc (patch) | |
tree | a70016f891b7025b497637e4bbd9df3a2dd6e6b3 /src/lib/trace | |
parent | 3604d86a016b6202a5864a81f46addc087658b8c (diff) | |
download | tor-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.am | 4 | ||||
-rw-r--r-- | src/lib/trace/trace.h | 21 | ||||
-rw-r--r-- | src/lib/trace/trace_stub.c | 19 | ||||
-rw-r--r-- | src/lib/trace/trace_sys.c | 5 | ||||
-rw-r--r-- | src/lib/trace/trace_sys.h | 8 |
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) */ |