Merge remote-tracking branch 'tor-gitlab/mr/187' into master

This commit is contained in:
George Kadianakis 2020-11-03 13:04:09 +02:00
commit 4f5a116618
5 changed files with 68 additions and 1 deletions

3
changes/ticket18888 Normal file
View File

@ -0,0 +1,3 @@
o Minor features (safety):
- Log a warning at startup if Tor is built with compile-time options that
are likely to make it less stable or reliable. Closes ticket 18888.

View File

@ -2,6 +2,7 @@
# ADD_C_FILE: INSERT SOURCES HERE. # ADD_C_FILE: INSERT SOURCES HERE.
LIBTOR_APP_A_SOURCES += \ LIBTOR_APP_A_SOURCES += \
src/app/main/main.c \ src/app/main/main.c \
src/app/main/risky_options.c \
src/app/main/shutdown.c \ src/app/main/shutdown.c \
src/app/main/subsystem_list.c \ src/app/main/subsystem_list.c \
src/app/main/subsysmgr.c src/app/main/subsysmgr.c
@ -10,6 +11,7 @@ LIBTOR_APP_A_SOURCES += \
noinst_HEADERS += \ noinst_HEADERS += \
src/app/main/main.h \ src/app/main/main.h \
src/app/main/ntmain.h \ src/app/main/ntmain.h \
src/app/main/risky_options.h \
src/app/main/shutdown.h \ src/app/main/shutdown.h \
src/app/main/subsysmgr.h src/app/main/subsysmgr.h

View File

@ -16,6 +16,7 @@
#include "app/config/quiet_level.h" #include "app/config/quiet_level.h"
#include "app/main/main.h" #include "app/main/main.h"
#include "app/main/ntmain.h" #include "app/main/ntmain.h"
#include "app/main/risky_options.h"
#include "app/main/shutdown.h" #include "app/main/shutdown.h"
#include "app/main/subsysmgr.h" #include "app/main/subsysmgr.h"
#include "core/mainloop/connection.h" #include "core/mainloop/connection.h"
@ -539,6 +540,7 @@ tor_init(int argc, char *argv[])
{ {
char progname[256]; char progname[256];
quiet_level_t quiet = QUIET_NONE; quiet_level_t quiet = QUIET_NONE;
bool running_tor = false;
time_of_process_start = time(NULL); time_of_process_start = time(NULL);
tor_init_connection_lists(); tor_init_connection_lists();
@ -562,8 +564,10 @@ tor_init(int argc, char *argv[])
whether we log anything at all to stdout. */ whether we log anything at all to stdout. */
parsed_cmdline_t *cmdline; parsed_cmdline_t *cmdline;
cmdline = config_parse_commandline(argc, argv, 1); cmdline = config_parse_commandline(argc, argv, 1);
if (cmdline) if (cmdline) {
quiet = cmdline->quiet_level; quiet = cmdline->quiet_level;
running_tor = (cmdline->command == CMD_RUN_TOR);
}
parsed_cmdline_free(cmdline); parsed_cmdline_free(cmdline);
} }
@ -599,6 +603,12 @@ tor_init(int argc, char *argv[])
log_notice(LD_GENERAL, "This version is not a stable Tor release. " log_notice(LD_GENERAL, "This version is not a stable Tor release. "
"Expect more bugs than usual."); "Expect more bugs than usual.");
if (strlen(risky_option_list) && running_tor) {
log_warn(LD_GENERAL, "This build of Tor has been compiled with one "
"or more options that might make it less reliable or secure! "
"They are:%s", risky_option_list);
}
tor_compress_log_init_warnings(); tor_compress_log_init_warnings();
} }

View File

@ -0,0 +1,35 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
* Copyright (c) 2007-2020, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file risky_options.c
* \brief List compile-time options that might make Tor less reliable.
**/
#include "orconfig.h"
#include "app/main/risky_options.h"
/** A space-separated list of the compile-time options might make Tor less
* reliable or secure. These options mainly exist for testing or debugging.
*/
const char risky_option_list[] =
""
#ifdef DISABLE_ASSERTS_IN_TEST
" --disable-asserts-in-test"
#endif
#ifdef TOR_UNIT_TESTS
" TOR_UNIT_TESTS"
#endif
#ifdef ENABLE_RESTART_DEBUGGING
" --enable-restart-debugging"
#endif
#ifdef ALL_BUGS_ARE_FATAL
" --enable-all-bugs-are-fatal"
#endif
#ifdef DISABLE_MEMORY_SENTINELS
" --disable-memory-sentinels"
#endif
;

View File

@ -0,0 +1,17 @@
/* Copyright (c) 2001 Matej Pfajfar.
* Copyright (c) 2001-2004, Roger Dingledine.
* Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
* Copyright (c) 2007-2020, The Tor Project, Inc. */
/* See LICENSE for licensing information */
/**
* \file risky_options.h
* \brief Header for risky_options.c
**/
#ifndef TOR_RISKY_OPTIONS_H
#define TOR_RISKY_OPTIONS_H
extern const char risky_option_list[];
#endif