mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-24 04:13:28 +01:00
Merge branch 'bug19180_easy_squashed'
This commit is contained in:
commit
d6b2af7a3a
@ -75,7 +75,7 @@ dnl 1:flags
|
||||
dnl 2:also try to link (yes: non-empty string)
|
||||
dnl will set yes or no in $tor_can_link_$1 (as modified by AS_VAR_PUSHDEF)
|
||||
AC_DEFUN([TOR_CHECK_CFLAGS], [
|
||||
TOR_TRY_COMPILE_WITH_CFLAGS($1, $2, CFLAGS="$CFLAGS $1", /bin/true)
|
||||
TOR_TRY_COMPILE_WITH_CFLAGS($1, $2, CFLAGS="$CFLAGS $1", true)
|
||||
])
|
||||
|
||||
dnl 1:flags
|
||||
|
4
changes/bug19203
Normal file
4
changes/bug19203
Normal file
@ -0,0 +1,4 @@
|
||||
o Major bugfixes (user interface):
|
||||
- Correctly give a warning in the cases where a relay is specified by
|
||||
nickname, and one such relay is found, but it is not officially Named.
|
||||
Fixes bug 19203; bugfix on 0.2.3.1-alpha.
|
4
changes/bug19216
Normal file
4
changes/bug19216
Normal file
@ -0,0 +1,4 @@
|
||||
o Minor bugfixes:
|
||||
- When building with Clang, include our full array of GCC warnings.
|
||||
(Previously, we included only a subset, because of the way we
|
||||
detected them.) Fixes bug 19216; bugfix on 0.2.0.1-alpha.
|
303
configure.ac
303
configure.ac
@ -1657,34 +1657,12 @@ esac
|
||||
|
||||
# Add some more warnings which we use in development but not in the
|
||||
# released versions. (Some relevant gcc versions can't handle these.)
|
||||
#
|
||||
# Note that we have to do this near the end of the autoconf process, or
|
||||
# else we may run into problems when these warnings hit on the testing C
|
||||
# programs that autoconf wants to build.
|
||||
if test "x$enable_gcc_warnings_advisory" != "xno"; then
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
||||
#if !defined(__GNUC__) || (__GNUC__ < 4)
|
||||
#error
|
||||
#endif])], have_gcc4=yes, have_gcc4=no)
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
||||
#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 2)
|
||||
#error
|
||||
#endif])], have_gcc42=yes, have_gcc42=no)
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
||||
#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
|
||||
#error
|
||||
#endif])], have_gcc43=yes, have_gcc43=no)
|
||||
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [
|
||||
#if !defined(__GNUC__) || (__GNUC__ < 4) || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
|
||||
#error
|
||||
#endif])], have_gcc46=yes, have_gcc46=no)
|
||||
|
||||
save_CFLAGS="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -Wshorten-64-to-32"
|
||||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [])], have_shorten64_flag=yes,
|
||||
have_shorten64_flag=no)
|
||||
CFLAGS="$save_CFLAGS"
|
||||
|
||||
case "$host" in
|
||||
*-*-openbsd* | *-*-bitrig*)
|
||||
# Some OpenBSD versions (like 4.8) have -Wsystem-headers by default.
|
||||
@ -1694,44 +1672,249 @@ if test "x$enable_gcc_warnings_advisory" != "xno"; then
|
||||
CFLAGS="$CFLAGS -Wno-system-headers" ;;
|
||||
esac
|
||||
|
||||
# GCC4.3 users once report trouble with -Wstrict-overflow=5. GCC5 users
|
||||
# have it work better.
|
||||
# CFLAGS="$CFLAGS -Wstrict-overflow=1"
|
||||
|
||||
# This warning was added in gcc 4.3, but it appears to generate
|
||||
# spurious warnings in gcc 4.4. I don't know if it works in 4.5.
|
||||
#CFLAGS="$CFLAGS -Wlogical-op"
|
||||
|
||||
m4_foreach_w([warning_flag], [
|
||||
-Waddress
|
||||
-Waddress-of-array-temporary
|
||||
-Waddress-of-temporary
|
||||
-Wambiguous-macro
|
||||
-Wanonymous-pack-parens
|
||||
-Warc
|
||||
-Warc-abi
|
||||
-Warc-bridge-casts-disallowed-in-nonarc
|
||||
-Warc-maybe-repeated-use-of-weak
|
||||
-Warc-performSelector-leaks
|
||||
-Warc-repeated-use-of-weak
|
||||
-Warray-bounds
|
||||
-Warray-bounds-pointer-arithmetic
|
||||
-Wasm
|
||||
-Wasm-operand-widths
|
||||
-Watomic-properties
|
||||
-Watomic-property-with-user-defined-accessor
|
||||
-Wauto-import
|
||||
-Wauto-storage-class
|
||||
-Wauto-var-id
|
||||
-Wavailability
|
||||
-Wbackslash-newline-escape
|
||||
-Wbad-array-new-length
|
||||
-Wbind-to-temporary-copy
|
||||
-Wbitfield-constant-conversion
|
||||
-Wbool-conversion
|
||||
-Wbool-conversion
|
||||
-Wbool-conversions
|
||||
-Wbuiltin-requires-header
|
||||
-Wc11-extensions
|
||||
-Wc99-c11-compat
|
||||
-Wchar-align
|
||||
-Wcompare-distinct-pointer-types
|
||||
-Wcomplex-component-init
|
||||
-Wconditional-type-mismatch
|
||||
-Wconfig-macros
|
||||
-Wconstant-conversion
|
||||
-Wconstant-logical-operand
|
||||
-Wconstexpr-not-const
|
||||
-Wcustom-atomic-properties
|
||||
-Wdangling-field
|
||||
-Wdangling-initializer-list
|
||||
-Wdate-time
|
||||
-Wdelegating-ctor-cycles
|
||||
-Wdeprecated-implementations
|
||||
-Wdeprecated-register
|
||||
-Wdirect-ivar-access
|
||||
-Wdiscard-qual
|
||||
-Wdistributed-object-modifiers
|
||||
-Wdivision-by-zero
|
||||
-Wdollar-in-identifier-extension
|
||||
-Wdouble-promotion
|
||||
-Wduplicate-decl-specifier
|
||||
-Wduplicate-enum
|
||||
-Wduplicate-method-arg
|
||||
-Wduplicate-method-match
|
||||
-Wduplicated-cond
|
||||
-Wdynamic-class-memaccess
|
||||
-Wembedded-directive
|
||||
-Wempty-translation-unit
|
||||
-Wenum-conversion
|
||||
-Wexit-time-destructors
|
||||
-Wexplicit-ownership-type
|
||||
-Wextern-initializer
|
||||
-Wextra
|
||||
-Wextra-semi
|
||||
-Wextra-tokens
|
||||
-Wflexible-array-extensions
|
||||
-Wfloat-conversion
|
||||
-Wformat-non-iso
|
||||
-Wfour-char-constants
|
||||
-Wgcc-compat
|
||||
-Wglobal-constructors
|
||||
-Wgnu-array-member-paren-init
|
||||
-Wgnu-designator
|
||||
-Wgnu-static-float-init
|
||||
-Wgnu-static-float-init
|
||||
-Wheader-guard
|
||||
-Wheader-hygiene
|
||||
-Widiomatic-parentheses
|
||||
-Wignored-attributes
|
||||
-Wimplicit-atomic-properties
|
||||
-Wimplicit-conversion-floating-point-to-bool
|
||||
-Wimplicit-exception-spec-mismatch
|
||||
-Wimplicit-fallthrough
|
||||
-Wimplicit-fallthrough-per-function
|
||||
-Wimplicit-retain-self
|
||||
-Wimport-preprocessor-directive-pedantic
|
||||
-Wincompatible-library-redeclaration
|
||||
-Wincompatible-pointer-types-discards-qualifiers
|
||||
-Wincomplete-implementation
|
||||
-Wincomplete-module
|
||||
-Wincomplete-umbrella
|
||||
-Winit-self
|
||||
-Wint-conversions
|
||||
-Wint-to-void-pointer-cast
|
||||
-Winteger-overflow
|
||||
-Winvalid-constexpr
|
||||
-Winvalid-iboutlet
|
||||
-Winvalid-noreturn
|
||||
-Winvalid-pp-token
|
||||
-Winvalid-source-encoding
|
||||
-Winvalid-token-paste
|
||||
-Wknr-promoted-parameter
|
||||
-Wlanguage-extension-token
|
||||
-Wlarge-by-value-copy
|
||||
-Wliteral-conversion
|
||||
-Wliteral-range
|
||||
-Wlocal-type-template-args
|
||||
-Wlogical-op
|
||||
-Wloop-analysis
|
||||
-Wmain-return-type
|
||||
-Wmalformed-warning-check
|
||||
-Wmethod-signatures
|
||||
-Wmicrosoft
|
||||
-Wmicrosoft-exists
|
||||
-Wmismatched-parameter-types
|
||||
-Wmismatched-return-types
|
||||
-Wmissing-field-initializers
|
||||
-Wmissing-format-attribute
|
||||
-Wmissing-noreturn
|
||||
-Wmissing-selector-name
|
||||
-Wmissing-sysroot
|
||||
-Wmissing-variable-declarations
|
||||
-Wmodule-conflict
|
||||
-Wnested-anon-types
|
||||
-Wnewline-eof
|
||||
-Wnon-literal-null-conversion
|
||||
-Wnon-pod-varargs
|
||||
-Wnonportable-cfstrings
|
||||
-Wnormalized=id
|
||||
-Wnull-arithmetic
|
||||
-Wnull-character
|
||||
-Wnull-conversion
|
||||
-Wnull-conversion
|
||||
-Wnull-dereference
|
||||
-Wout-of-line-declaration
|
||||
-Wover-aligned
|
||||
-Woverlength-strings
|
||||
-Woverride-init
|
||||
-Woverriding-method-mismatch
|
||||
-Wpointer-type-mismatch
|
||||
-Wpredefined-identifier-outside-function
|
||||
-Wprotocol-property-synthesis-ambiguity
|
||||
-Wreadonly-iboutlet-property
|
||||
-Wreadonly-setter-attrs
|
||||
-Wreceiver-expr
|
||||
-Wreceiver-forward-class
|
||||
-Wreceiver-is-weak
|
||||
-Wreinterpret-base-class
|
||||
-Wrequires-super-attribute
|
||||
-Wreserved-user-defined-literal
|
||||
-Wreturn-stack-address
|
||||
-Wsection
|
||||
-Wselector-type-mismatch
|
||||
-Wsentinel
|
||||
-Wserialized-diagnostics
|
||||
-Wshift-count-negative
|
||||
-Wshift-count-overflow
|
||||
-Wshift-negative-value
|
||||
-Wshift-overflow=2
|
||||
-Wshift-sign-overflow
|
||||
-Wshorten-64-to-32
|
||||
-Wshorten-64-to-32
|
||||
-Wsizeof-array-argument
|
||||
-Wsource-uses-openmp
|
||||
-Wstatic-float-init
|
||||
-Wstatic-in-inline
|
||||
-Wstatic-local-in-inline
|
||||
-Wstrict-overflow=2
|
||||
-Wstring-compare
|
||||
-Wstring-conversion
|
||||
-Wstrlcpy-strlcat-size
|
||||
-Wstrncat-size
|
||||
-Wsuggest-attribute=format
|
||||
-Wsuggest-attribute=noreturn
|
||||
-Wsuper-class-method-mismatch
|
||||
-Wswitch-bool
|
||||
-Wsync-nand
|
||||
-Wtautological-constant-out-of-range-compare
|
||||
-Wtentative-definition-incomplete-type
|
||||
-Wthread-safety
|
||||
-Wthread-safety-analysis
|
||||
-Wthread-safety-attributes
|
||||
-Wthread-safety-beta
|
||||
-Wthread-safety-precise
|
||||
-Wtrampolines
|
||||
-Wtype-safety
|
||||
-Wtypedef-redefinition
|
||||
-Wtypename-missing
|
||||
-Wundefined-inline
|
||||
-Wundefined-internal
|
||||
-Wundefined-reinterpret-cast
|
||||
-Wunicode
|
||||
-Wunicode-whitespace
|
||||
-Wunknown-warning-option
|
||||
-Wunnamed-type-template-args
|
||||
-Wunneeded-member-function
|
||||
-Wunsequenced
|
||||
-Wunsupported-visibility
|
||||
-Wunused-but-set-parameter
|
||||
-Wunused-but-set-variable
|
||||
-Wunused-command-line-argument
|
||||
-Wunused-const-variable=2
|
||||
-Wunused-exception-parameter
|
||||
-Wunused-local-typedefs
|
||||
-Wunused-member-function
|
||||
-Wunused-sanitize-argument
|
||||
-Wunused-volatile-lvalue
|
||||
-Wuser-defined-literals
|
||||
-Wvariadic-macros
|
||||
-Wvector-conversion
|
||||
-Wvector-conversions
|
||||
-Wvexing-parse
|
||||
-Wvisibility
|
||||
-Wvla-extension
|
||||
-Wvla-extension
|
||||
-Wzero-length-array
|
||||
-Wzero-length-array
|
||||
], [ TOR_CHECK_CFLAGS([warning_flag]) ])
|
||||
|
||||
CFLAGS="$CFLAGS -W -Wfloat-equal -Wundef -Wpointer-arith"
|
||||
CFLAGS="$CFLAGS -Wstrict-prototypes -Wmissing-prototypes -Wwrite-strings"
|
||||
CFLAGS="$CFLAGS -Wredundant-decls -Wchar-subscripts -Wcomment -Wformat=2"
|
||||
CFLAGS="$CFLAGS -Wwrite-strings -Wmissing-declarations -Wredundant-decls"
|
||||
CFLAGS="$CFLAGS -Wwrite-strings"
|
||||
CFLAGS="$CFLAGS -Wnested-externs -Wbad-function-cast -Wswitch-enum"
|
||||
CFLAGS="$CFLAGS -Waggregate-return -Wpacked -Wunused"
|
||||
CFLAGS="$CFLAGS -Wunused-parameter "
|
||||
# These interfere with building main() { return 0; }, which autoconf
|
||||
# likes to use as its default program.
|
||||
CFLAGS="$CFLAGS -Wold-style-definition -Wmissing-declarations"
|
||||
|
||||
# Disabled, so we can use mallinfo(): -Waggregate-return
|
||||
|
||||
if test "x$have_gcc4" = "xyes"; then
|
||||
# These warnings break gcc 3.3.5 and work on gcc 4.0.2
|
||||
CFLAGS="$CFLAGS -Winit-self -Wmissing-field-initializers -Wold-style-definition"
|
||||
fi
|
||||
|
||||
if test "x$have_gcc42" = "xyes"; then
|
||||
# These warnings break gcc 4.0.2 and work on gcc 4.2
|
||||
CFLAGS="$CFLAGS -Waddress -Wmissing-noreturn -Wstrict-overflow=1"
|
||||
|
||||
# We used to use -Wstrict-overflow=5, but that breaks us heavily under 4.3.
|
||||
fi
|
||||
|
||||
if test "x$have_gcc42" = "xyes" && test "x$have_clang" = "xno"; then
|
||||
# These warnings break gcc 4.0.2 and clang, but work on gcc 4.2
|
||||
CFLAGS="$CFLAGS -Wnormalized=id -Woverride-init"
|
||||
fi
|
||||
|
||||
if test "x$have_gcc43" = "xyes"; then
|
||||
# These warnings break gcc 4.2 and work on gcc 4.3
|
||||
CFLAGS="$CFLAGS -Wextra -Warray-bounds"
|
||||
fi
|
||||
|
||||
if test "x$have_gcc46" = "xyes"; then
|
||||
# This warning was added in gcc 4.3, but it appears to generate
|
||||
# spurious warnings in gcc 4.4. I don't know if it works in 4.5.
|
||||
CFLAGS="$CFLAGS -Wlogical-op"
|
||||
fi
|
||||
|
||||
if test "x$have_shorten64_flag" = "xyes"; then
|
||||
CFLAGS="$CFLAGS -Wshorten-64-to-32"
|
||||
if test "$tor_cv_cflags__Wnull_dereference" = "yes"; then
|
||||
AC_DEFINE([HAVE_CFLAG_WNULL_DEREFERENCE], 1, [True if we have -Wnull-dereference])
|
||||
fi
|
||||
|
||||
if test "x$enable_fatal_warnings" = "xyes"; then
|
||||
@ -1740,8 +1923,6 @@ if test "x$enable_gcc_warnings_advisory" != "xno"; then
|
||||
CFLAGS="$CFLAGS -Werror"
|
||||
fi
|
||||
|
||||
##This will break the world on some 64-bit architectures
|
||||
# CFLAGS="$CFLAGS -Winline"
|
||||
fi
|
||||
|
||||
if test "$enable_coverage" = "yes" && test "$have_clang" = "no"; then
|
||||
|
@ -131,7 +131,8 @@ tor_addr_to_sockaddr(const tor_addr_t *a,
|
||||
#endif
|
||||
sin6->sin6_family = AF_INET6;
|
||||
sin6->sin6_port = htons(port);
|
||||
memcpy(&sin6->sin6_addr, tor_addr_to_in6(a), sizeof(struct in6_addr));
|
||||
memcpy(&sin6->sin6_addr, tor_addr_to_in6_assert(a),
|
||||
sizeof(struct in6_addr));
|
||||
return sizeof(struct sockaddr_in6);
|
||||
} else {
|
||||
return 0;
|
||||
|
@ -74,6 +74,7 @@ typedef struct tor_addr_port_t
|
||||
#define TOR_ADDR_NULL {AF_UNSPEC, {0}}
|
||||
|
||||
static inline const struct in6_addr *tor_addr_to_in6(const tor_addr_t *a);
|
||||
static inline const struct in6_addr *tor_addr_to_in6_assert(const tor_addr_t *a);
|
||||
static inline uint32_t tor_addr_to_ipv4n(const tor_addr_t *a);
|
||||
static inline uint32_t tor_addr_to_ipv4h(const tor_addr_t *a);
|
||||
static inline uint32_t tor_addr_to_mapped_ipv4h(const tor_addr_t *a);
|
||||
@ -97,21 +98,30 @@ tor_addr_to_in6(const tor_addr_t *a)
|
||||
return a->family == AF_INET6 ? &a->addr.in6_addr : NULL;
|
||||
}
|
||||
|
||||
/** As tor_addr_to_in6, but assert that the address truly is an IPv6 address. */
|
||||
static inline const struct in6_addr *
|
||||
tor_addr_to_in6_assert(const tor_addr_t *a)
|
||||
{
|
||||
tor_assert(a->family == AF_INET6);
|
||||
return &a->addr.in6_addr;
|
||||
}
|
||||
|
||||
/** Given an IPv6 address <b>x</b>, yield it as an array of uint8_t.
|
||||
*
|
||||
* Requires that <b>x</b> is actually an IPv6 address.
|
||||
*/
|
||||
#define tor_addr_to_in6_addr8(x) tor_addr_to_in6(x)->s6_addr
|
||||
#define tor_addr_to_in6_addr8(x) tor_addr_to_in6_assert(x)->s6_addr
|
||||
|
||||
/** Given an IPv6 address <b>x</b>, yield it as an array of uint16_t.
|
||||
*
|
||||
* Requires that <b>x</b> is actually an IPv6 address.
|
||||
*/
|
||||
#define tor_addr_to_in6_addr16(x) S6_ADDR16(*tor_addr_to_in6(x))
|
||||
#define tor_addr_to_in6_addr16(x) S6_ADDR16(*tor_addr_to_in6_assert(x))
|
||||
/** Given an IPv6 address <b>x</b>, yield it as an array of uint32_t.
|
||||
*
|
||||
* Requires that <b>x</b> is actually an IPv6 address.
|
||||
*/
|
||||
#define tor_addr_to_in6_addr32(x) S6_ADDR32(*tor_addr_to_in6(x))
|
||||
#define tor_addr_to_in6_addr32(x) S6_ADDR32(*tor_addr_to_in6_assert(x))
|
||||
|
||||
/** Return an IPv4 address in network order for <b>a</b>, or 0 if
|
||||
* <b>a</b> is not an IPv4 address. */
|
||||
|
@ -82,6 +82,44 @@
|
||||
#define CHECK_SCANF(formatIdx, firstArg)
|
||||
#endif
|
||||
|
||||
/* What GCC do we have? */
|
||||
#ifdef __GNUC__
|
||||
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
||||
#else
|
||||
#define GCC_VERSION 0
|
||||
#endif
|
||||
|
||||
/* Temporarily enable and disable warnings. */
|
||||
#ifdef __GNUC__
|
||||
# define PRAGMA_STRINGIFY_(s) #s
|
||||
# define PRAGMA_JOIN_STRINGIFY_(a,b) PRAGMA_STRINGIFY_(a ## b)
|
||||
/* Support for macro-generated pragmas (c99) */
|
||||
# define PRAGMA_(x) _Pragma (#x)
|
||||
# ifdef __clang__
|
||||
# define PRAGMA_DIAGNOSTIC_(x) PRAGMA_(clang diagnostic x)
|
||||
# else
|
||||
# define PRAGMA_DIAGNOSTIC_(x) PRAGMA_(GCC diagnostic x)
|
||||
# endif
|
||||
# if defined(__clang__) || GCC_VERSION >= 406
|
||||
/* we have push/pop support */
|
||||
# define DISABLE_GCC_WARNING(warning) \
|
||||
PRAGMA_DIAGNOSTIC_(push) \
|
||||
PRAGMA_DIAGNOSTIC_(ignored PRAGMA_JOIN_STRINGIFY_(-W,warning))
|
||||
# define ENABLE_GCC_WARNING(warning) \
|
||||
PRAGMA_DIAGNOSTIC_(pop)
|
||||
# else
|
||||
/* older version of gcc: no push/pop support. */
|
||||
# define DISABLE_GCC_WARNING(warning) \
|
||||
PRAGMA_DIAGNOSTIC_(ignored PRAGMA_JOIN_STRINGIFY_(-W,warning))
|
||||
# define ENABLE_GCC_WARNING(warning) \
|
||||
PRAGMA_DIAGNOSTIC_(warning PRAGMA_JOIN_STRINGIFY_(-W,warning))
|
||||
# endif
|
||||
#else /* ifdef __GNUC__ */
|
||||
/* not gcc at all */
|
||||
# define DISABLE_GCC_WARNING(warning)
|
||||
# define ENABLE_GCC_WARNING(warning)
|
||||
#endif
|
||||
|
||||
/* inline is __inline on windows. */
|
||||
#ifdef _WIN32
|
||||
#define inline __inline
|
||||
|
@ -125,7 +125,7 @@ tor_event_free(struct event *ev)
|
||||
#endif
|
||||
|
||||
/** Global event base for use by the main thread. */
|
||||
struct event_base *the_event_base = NULL;
|
||||
static struct event_base *the_event_base = NULL;
|
||||
|
||||
/* This is what passes for version detection on OSX. We set
|
||||
* MACOSX_KQUEUE_IS_BROKEN to true iff we're on a version of OSX before
|
||||
|
@ -319,6 +319,11 @@ void crypto_add_spaces_to_fp(char *out, size_t outlen, const char *in);
|
||||
#ifdef CRYPTO_PRIVATE
|
||||
STATIC int crypto_force_rand_ssleay(void);
|
||||
STATIC int crypto_strongest_rand_raw(uint8_t *out, size_t out_len);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern int break_strongest_rng_syscall;
|
||||
extern int break_strongest_rng_fallback;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
@ -270,7 +270,7 @@ log_tor_version(logfile_t *lf, int reset)
|
||||
return 0;
|
||||
}
|
||||
|
||||
const char bug_suffix[] = " (on Tor " VERSION
|
||||
static const char bug_suffix[] = " (on Tor " VERSION
|
||||
#ifndef _MSC_VER
|
||||
" "
|
||||
#include "micro-revision.i"
|
||||
|
@ -1443,7 +1443,7 @@ static HT_HEAD(getaddrinfo_cache, cached_getaddrinfo_item_t)
|
||||
|
||||
HT_PROTOTYPE(getaddrinfo_cache, cached_getaddrinfo_item_t, node,
|
||||
cached_getaddrinfo_item_hash,
|
||||
cached_getaddrinfo_items_eq);
|
||||
cached_getaddrinfo_items_eq)
|
||||
HT_GENERATE2(getaddrinfo_cache, cached_getaddrinfo_item_t, node,
|
||||
cached_getaddrinfo_item_hash,
|
||||
cached_getaddrinfo_items_eq,
|
||||
|
@ -176,7 +176,7 @@ void log_fn_ratelim_(struct ratelim_t *ratelim, int severity,
|
||||
const char *format, ...)
|
||||
CHECK_PRINTF(5,6);
|
||||
|
||||
#if defined(__GNUC__)
|
||||
#if defined(__GNUC__) && __GNUC__ <= 3
|
||||
|
||||
/* These are the GCC varidaic macros, so that older versions of GCC don't
|
||||
* break. */
|
||||
|
@ -24,18 +24,11 @@
|
||||
#include <ws2tcpip.h>
|
||||
#endif
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
||||
#endif
|
||||
#include "compat.h"
|
||||
|
||||
#if __GNUC__ && GCC_VERSION >= 402
|
||||
#if GCC_VERSION >= 406
|
||||
#pragma GCC diagnostic push
|
||||
#endif
|
||||
/* Some versions of OpenSSL declare SSL_get_selected_srtp_profile twice in
|
||||
* srtp.h. Suppress the GCC warning so we can build with -Wredundant-decl. */
|
||||
#pragma GCC diagnostic ignored "-Wredundant-decls"
|
||||
#endif
|
||||
DISABLE_GCC_WARNING(redundant-decls)
|
||||
|
||||
#include <openssl/opensslv.h>
|
||||
#include "crypto.h"
|
||||
@ -53,13 +46,7 @@
|
||||
#include <openssl/bn.h>
|
||||
#include <openssl/rsa.h>
|
||||
|
||||
#if __GNUC__ && GCC_VERSION >= 402
|
||||
#if GCC_VERSION >= 406
|
||||
#pragma GCC diagnostic pop
|
||||
#else
|
||||
#pragma GCC diagnostic warning "-Wredundant-decls"
|
||||
#endif
|
||||
#endif
|
||||
ENABLE_GCC_WARNING(redundant-decls)
|
||||
|
||||
#ifdef USE_BUFFEREVENTS
|
||||
#include <event2/bufferevent_ssl.h>
|
||||
@ -575,7 +562,7 @@ MOCK_IMPL(STATIC X509 *,
|
||||
|
||||
/** List of ciphers that servers should select from when we actually have
|
||||
* our choice of what cipher to use. */
|
||||
const char UNRESTRICTED_SERVER_CIPHER_LIST[] =
|
||||
static const char UNRESTRICTED_SERVER_CIPHER_LIST[] =
|
||||
/* This list is autogenerated with the gen_server_ciphers.py script;
|
||||
* don't hand-edit it. */
|
||||
#ifdef TLS1_TXT_ECDHE_RSA_WITH_AES_256_GCM_SHA384
|
||||
|
@ -164,8 +164,18 @@ STATIC int tor_tls_context_init_one(tor_tls_context_t **ppcontext,
|
||||
int is_client);
|
||||
STATIC void tls_log_errors(tor_tls_t *tls, int severity, int domain,
|
||||
const char *doing);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern int tor_tls_object_ex_data_index;
|
||||
extern tor_tls_context_t *server_tls_context;
|
||||
extern tor_tls_context_t *client_tls_context;
|
||||
extern uint16_t v2_cipher_list[];
|
||||
extern uint64_t total_bytes_written_over_tls;
|
||||
extern uint64_t total_bytes_written_by_tls;
|
||||
#endif
|
||||
|
||||
#endif /* endif TORTLS_PRIVATE */
|
||||
|
||||
const char *tor_tls_err_to_string(int err);
|
||||
void tor_tls_get_state_description(tor_tls_t *tls, char *buf, size_t sz);
|
||||
|
||||
|
@ -342,6 +342,7 @@ tor_free_(void *mem)
|
||||
tor_free(mem);
|
||||
}
|
||||
|
||||
DISABLE_GCC_WARNING(aggregate-return)
|
||||
/** Call the platform malloc info function, and dump the results to the log at
|
||||
* level <b>severity</b>. If no such function exists, do nothing. */
|
||||
void
|
||||
@ -369,6 +370,7 @@ tor_log_mallinfo(int severity)
|
||||
);
|
||||
#endif
|
||||
}
|
||||
ENABLE_GCC_WARNING(aggregate-return)
|
||||
|
||||
/* =====
|
||||
* Math
|
||||
@ -5528,7 +5530,7 @@ clamp_double_to_int64(double number)
|
||||
* representable integer for which this is not the case is INT64_MIN, but
|
||||
* it is covered by the logic below. */
|
||||
if (isfinite(number) && exp <= 63) {
|
||||
return number;
|
||||
return (int64_t)number;
|
||||
}
|
||||
|
||||
/* Handle infinities and finite numbers with magnitude >= 2^63. */
|
||||
|
@ -61,9 +61,9 @@ process_map_entries_eq_(const waitpid_callback_t *a,
|
||||
static HT_HEAD(process_map, waitpid_callback_t) process_map = HT_INITIALIZER();
|
||||
|
||||
HT_PROTOTYPE(process_map, waitpid_callback_t, node, process_map_entry_hash_,
|
||||
process_map_entries_eq_);
|
||||
process_map_entries_eq_)
|
||||
HT_GENERATE2(process_map, waitpid_callback_t, node, process_map_entry_hash_,
|
||||
process_map_entries_eq_, 0.6, tor_reallocarray_, tor_free_);
|
||||
process_map_entries_eq_, 0.6, tor_reallocarray_, tor_free_)
|
||||
|
||||
/**
|
||||
* Begin monitoring the child pid <b>pid</b> to see if we get a SIGCHLD for
|
||||
|
@ -8,9 +8,9 @@
|
||||
|
||||
typedef uint64_t bignum25519[5];
|
||||
|
||||
static const uint64_t reduce_mask_40 = ((uint64_t)1 << 40) - 1;
|
||||
//static const uint64_t reduce_mask_40 = ((uint64_t)1 << 40) - 1;
|
||||
static const uint64_t reduce_mask_51 = ((uint64_t)1 << 51) - 1;
|
||||
static const uint64_t reduce_mask_56 = ((uint64_t)1 << 56) - 1;
|
||||
//static const uint64_t reduce_mask_56 = ((uint64_t)1 << 56) - 1;
|
||||
|
||||
/* out = in */
|
||||
DONNA_INLINE static void
|
||||
|
@ -2,6 +2,11 @@
|
||||
|
||||
#define HAVE_GE25519_SCALARMULT_BASE_CHOOSE_NIELS
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic push
|
||||
#pragma clang diagnostic ignored "-Woverlength-strings"
|
||||
#endif
|
||||
|
||||
DONNA_NOINLINE static void
|
||||
ge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][96], uint32_t pos, signed char b) {
|
||||
int64_t breg = (int64_t)b;
|
||||
@ -347,5 +352,9 @@ ge25519_scalarmult_base_choose_niels(ge25519_niels *t, const uint8_t table[256][
|
||||
);
|
||||
}
|
||||
|
||||
#ifdef __clang__
|
||||
#pragma clang diagnostic pop
|
||||
#endif
|
||||
|
||||
#endif /* defined(ED25519_GCC_64BIT_X86_CHOOSE) */
|
||||
|
||||
|
@ -188,7 +188,7 @@ ge25519_multi_scalarmult_vartime(ge25519 *r, batch_heap *heap, size_t count) {
|
||||
}
|
||||
|
||||
/* not actually used for anything other than testing */
|
||||
unsigned char batch_point_buffer[3][32];
|
||||
static unsigned char batch_point_buffer[3][32];
|
||||
|
||||
static int
|
||||
ge25519_is_neutral_vartime(const ge25519 *p) {
|
||||
|
@ -203,6 +203,7 @@ ht_string_hash(const char *s)
|
||||
name##_HT_GROW(head, head->hth_n_entries+1); \
|
||||
HT_SET_HASH_(elm, field, hashfn); \
|
||||
p = name##_HT_FIND_P_(head, elm); \
|
||||
HT_ASSERT_(p != NULL); /* this holds because we called HT_GROW */ \
|
||||
r = *p; \
|
||||
*p = elm; \
|
||||
if (r && (r!=elm)) { \
|
||||
@ -470,6 +471,7 @@ ht_string_hash(const char *s)
|
||||
name##_HT_GROW(var##_head_, var##_head_->hth_n_entries+1); \
|
||||
HT_SET_HASH_((elm), field, hashfn); \
|
||||
var = name##_HT_FIND_P_(var##_head_, (elm)); \
|
||||
HT_ASSERT_(var); /* Holds because we called HT_GROW */ \
|
||||
if (*var) { \
|
||||
y; \
|
||||
} else { \
|
||||
|
@ -69,15 +69,16 @@ static int n_skipped = 0; /**< Number of tests that have been skipped. */
|
||||
static int opt_forked = 0; /**< True iff we're called from inside a win32 fork*/
|
||||
static int opt_nofork = 0; /**< Suppress calls to fork() for debugging. */
|
||||
static int opt_verbosity = 1; /**< -==quiet,0==terse,1==normal,2==verbose */
|
||||
const char *verbosity_flag = "";
|
||||
static const char *verbosity_flag = "";
|
||||
|
||||
const struct testlist_alias_t *cfg_aliases=NULL;
|
||||
static const struct testlist_alias_t *cfg_aliases=NULL;
|
||||
|
||||
enum outcome { SKIP=2, OK=1, FAIL=0 };
|
||||
static enum outcome cur_test_outcome = 0;
|
||||
const char *cur_test_prefix = NULL; /**< prefix of the current test group */
|
||||
/** prefix of the current test group */
|
||||
static const char *cur_test_prefix = NULL;
|
||||
/** Name of the current test, if we haven't logged is yet. Used for --quiet */
|
||||
const char *cur_test_name = NULL;
|
||||
static const char *cur_test_name = NULL;
|
||||
|
||||
#ifdef _WIN32
|
||||
/* Copy of argv[0] for win32. */
|
||||
|
@ -122,7 +122,7 @@ STATIC uint64_t estimated_total_queue_size = 0;
|
||||
* If more than one channel exists, follow the next_with_same_id pointer
|
||||
* as a linked list.
|
||||
*/
|
||||
HT_HEAD(channel_idmap, channel_idmap_entry_s) channel_identity_map =
|
||||
static HT_HEAD(channel_idmap, channel_idmap_entry_s) channel_identity_map =
|
||||
HT_INITIALIZER();
|
||||
|
||||
typedef struct channel_idmap_entry_s {
|
||||
@ -145,9 +145,9 @@ channel_idmap_eq(const channel_idmap_entry_t *a,
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
|
||||
channel_idmap_eq);
|
||||
channel_idmap_eq)
|
||||
HT_GENERATE2(channel_idmap, channel_idmap_entry_s, node, channel_idmap_hash,
|
||||
channel_idmap_eq, 0.5, tor_reallocarray_, tor_free_);
|
||||
channel_idmap_eq, 0.5, tor_reallocarray_, tor_free_)
|
||||
|
||||
static cell_queue_entry_t * cell_queue_entry_dup(cell_queue_entry_t *q);
|
||||
#if 0
|
||||
@ -4524,8 +4524,8 @@ channel_update_xmit_queue_size(channel_t *chan)
|
||||
/* Next, adjust by the overhead factor, if any is available */
|
||||
if (chan->get_overhead_estimate) {
|
||||
overhead = chan->get_overhead_estimate(chan);
|
||||
if (overhead >= 1.0f) {
|
||||
queued *= overhead;
|
||||
if (overhead >= 1.0) {
|
||||
queued = (uint64_t)(queued * overhead);
|
||||
} else {
|
||||
/* Ignore silly overhead factors */
|
||||
log_notice(LD_CHANNEL, "Ignoring silly overhead factor %f", overhead);
|
||||
|
@ -469,6 +469,10 @@ void channel_notify_flushed(channel_t *chan);
|
||||
/* Handle stuff we need to do on open like notifying circuits */
|
||||
void channel_do_open_actions(channel_t *chan);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern uint64_t estimated_total_queue_size;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
/* Helper functions to perform operations on channels */
|
||||
|
@ -22,6 +22,7 @@
|
||||
#include "channeltls.h"
|
||||
#include "circuitmux.h"
|
||||
#include "circuitmux_ewma.h"
|
||||
#include "command.h"
|
||||
#include "config.h"
|
||||
#include "connection.h"
|
||||
#include "connection_or.h"
|
||||
@ -51,7 +52,7 @@ uint64_t stats_n_authenticate_cells_processed = 0;
|
||||
uint64_t stats_n_authorize_cells_processed = 0;
|
||||
|
||||
/** Active listener, if any */
|
||||
channel_listener_t *channel_tls_listener = NULL;
|
||||
static channel_listener_t *channel_tls_listener = NULL;
|
||||
|
||||
/* channel_tls_t method declarations */
|
||||
|
||||
@ -445,7 +446,7 @@ channel_tls_free_method(channel_t *chan)
|
||||
static double
|
||||
channel_tls_get_overhead_estimate_method(channel_t *chan)
|
||||
{
|
||||
double overhead = 1.0f;
|
||||
double overhead = 1.0;
|
||||
channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
|
||||
|
||||
tor_assert(tlschan);
|
||||
@ -462,7 +463,8 @@ channel_tls_get_overhead_estimate_method(channel_t *chan)
|
||||
* Never estimate more than 2.0; otherwise we get silly large estimates
|
||||
* at the very start of a new TLS connection.
|
||||
*/
|
||||
if (overhead > 2.0f) overhead = 2.0f;
|
||||
if (overhead > 2.0)
|
||||
overhead = 2.0;
|
||||
}
|
||||
|
||||
log_debug(LD_CHANNEL,
|
||||
@ -797,6 +799,7 @@ static int
|
||||
channel_tls_write_packed_cell_method(channel_t *chan,
|
||||
packed_cell_t *packed_cell)
|
||||
{
|
||||
tor_assert(chan);
|
||||
channel_tls_t *tlschan = BASE_CHAN_TO_TLS(chan);
|
||||
size_t cell_network_size = get_cell_network_size(chan->wide_circ_ids);
|
||||
int written = 0;
|
||||
|
@ -52,6 +52,14 @@ void channel_tls_update_marks(or_connection_t *conn);
|
||||
/* Cleanup at shutdown */
|
||||
void channel_tls_free_all(void);
|
||||
|
||||
extern uint64_t stats_n_authorize_cells_processed;
|
||||
extern uint64_t stats_n_authenticate_cells_processed;
|
||||
extern uint64_t stats_n_versions_cells_processed;
|
||||
extern uint64_t stats_n_netinfo_cells_processed;
|
||||
extern uint64_t stats_n_vpadding_cells_processed;
|
||||
extern uint64_t stats_n_certs_cells_processed;
|
||||
extern uint64_t stats_n_auth_challenge_cells_processed;
|
||||
|
||||
#ifdef CHANNELTLS_PRIVATE
|
||||
STATIC void channel_tls_process_certs_cell(var_cell_t *cell,
|
||||
channel_tls_t *tlschan);
|
||||
|
@ -109,7 +109,7 @@ HT_GENERATE2(chan_circid_map, chan_circid_circuit_map_t, node,
|
||||
* used to improve performance when many cells arrive in a row from the
|
||||
* same circuit.
|
||||
*/
|
||||
chan_circid_circuit_map_t *_last_circid_chan_ent = NULL;
|
||||
static chan_circid_circuit_map_t *_last_circid_chan_ent = NULL;
|
||||
|
||||
/** Implementation helper for circuit_set_{p,n}_circid_channel: A circuit ID
|
||||
* and/or channel for circ has just changed from <b>old_chan, old_id</b>
|
||||
|
@ -362,7 +362,7 @@ HT_HEAD(chanid_circid_muxinfo_map, chanid_circid_muxinfo_t);
|
||||
|
||||
/* Emit a bunch of hash table stuff */
|
||||
HT_PROTOTYPE(chanid_circid_muxinfo_map, chanid_circid_muxinfo_t, node,
|
||||
chanid_circid_entry_hash, chanid_circid_entries_eq);
|
||||
chanid_circid_entry_hash, chanid_circid_entries_eq)
|
||||
HT_GENERATE2(chanid_circid_muxinfo_map, chanid_circid_muxinfo_t, node,
|
||||
chanid_circid_entry_hash, chanid_circid_entries_eq, 0.6,
|
||||
tor_reallocarray_, tor_free_)
|
||||
|
@ -12,13 +12,8 @@
|
||||
#include "or.h"
|
||||
#include "circuitmux.h"
|
||||
|
||||
/* Everything but circuitmux_ewma.c should see this extern */
|
||||
#ifndef TOR_CIRCUITMUX_EWMA_C_
|
||||
|
||||
extern circuitmux_policy_t ewma_policy;
|
||||
|
||||
#endif /* !(TOR_CIRCUITMUX_EWMA_C_) */
|
||||
|
||||
/* Externally visible EWMA functions */
|
||||
int cell_ewma_enabled(void);
|
||||
unsigned int cell_ewma_get_tick(void);
|
||||
|
@ -65,9 +65,6 @@
|
||||
#include <systemd/sd-daemon.h>
|
||||
#endif
|
||||
|
||||
/* From main.c */
|
||||
extern int quiet_level;
|
||||
|
||||
/* Prefix used to indicate a Unix socket in a FooPort configuration. */
|
||||
static const char unix_socket_prefix[] = "unix:";
|
||||
|
||||
@ -2677,7 +2674,7 @@ options_validate_cb(void *old_options, void *options, void *default_options,
|
||||
|
||||
#define REJECT(arg) \
|
||||
STMT_BEGIN *msg = tor_strdup(arg); return -1; STMT_END
|
||||
#ifdef __GNUC__
|
||||
#if defined(__GNUC__) && __GNUC__ <= 3
|
||||
#define COMPLAIN(args...) \
|
||||
STMT_BEGIN log_warn(LD_CONFIG, args); STMT_END
|
||||
#else
|
||||
@ -5776,7 +5773,7 @@ parse_dir_authority_line(const char *line, dirinfo_type_t required_type,
|
||||
} else if (!strcmpstart(flag, "weight=")) {
|
||||
int ok;
|
||||
const char *wstring = flag + strlen("weight=");
|
||||
weight = tor_parse_double(wstring, 0, UINT64_MAX, &ok, NULL);
|
||||
weight = tor_parse_double(wstring, 0, (double)UINT64_MAX, &ok, NULL);
|
||||
if (!ok) {
|
||||
log_warn(LD_CONFIG, "Invalid weight '%s' on DirAuthority line.",flag);
|
||||
weight=1.0;
|
||||
@ -5920,7 +5917,7 @@ parse_dir_fallback_line(const char *line,
|
||||
} else if (!strcmpstart(cp, "weight=")) {
|
||||
int ok;
|
||||
const char *wstring = cp + strlen("weight=");
|
||||
weight = tor_parse_double(wstring, 0, UINT64_MAX, &ok, NULL);
|
||||
weight = tor_parse_double(wstring, 0, (double)UINT64_MAX, &ok, NULL);
|
||||
if (!ok) {
|
||||
log_warn(LD_CONFIG, "Invalid weight '%s' on FallbackDir line.", cp);
|
||||
weight=1.0;
|
||||
|
@ -1238,7 +1238,7 @@ config_parse_units(const char *val, struct unit_table_t *u, int *ok)
|
||||
|
||||
v = tor_parse_uint64(val, 10, 0, UINT64_MAX, ok, &cp);
|
||||
if (!*ok || (cp && *cp == '.')) {
|
||||
d = tor_parse_double(val, 0, UINT64_MAX, ok, &cp);
|
||||
d = tor_parse_double(val, 0, (double)UINT64_MAX, ok, &cp);
|
||||
if (!*ok)
|
||||
goto done;
|
||||
use_float = 1;
|
||||
@ -1255,7 +1255,7 @@ config_parse_units(const char *val, struct unit_table_t *u, int *ok)
|
||||
for ( ;u->unit;++u) {
|
||||
if (!strcasecmp(u->unit, cp)) {
|
||||
if (use_float)
|
||||
v = u->multiplier * d;
|
||||
v = (uint64_t)(u->multiplier * d);
|
||||
else
|
||||
v *= u->multiplier;
|
||||
*ok = 1;
|
||||
|
@ -2240,7 +2240,7 @@ connection_send_socks5_connect(connection_t *conn)
|
||||
} else { /* AF_INET6 */
|
||||
buf[3] = 4;
|
||||
reqsize += 16;
|
||||
memcpy(buf + 4, tor_addr_to_in6(&conn->addr), 16);
|
||||
memcpy(buf + 4, tor_addr_to_in6_addr8(&conn->addr), 16);
|
||||
memcpy(buf + 20, &port, 2);
|
||||
}
|
||||
|
||||
@ -2697,8 +2697,6 @@ connection_is_rate_limited(connection_t *conn)
|
||||
#ifdef USE_BUFFEREVENTS
|
||||
static struct bufferevent_rate_limit_group *global_rate_limit = NULL;
|
||||
#else
|
||||
extern int global_read_bucket, global_write_bucket;
|
||||
extern int global_relayed_read_bucket, global_relayed_write_bucket;
|
||||
|
||||
/** Did either global write bucket run dry last second? If so,
|
||||
* we are likely to run dry again this second, so be stingy with the
|
||||
|
@ -67,9 +67,9 @@ ddmap_entry_set_digests(ddmap_entry_t *ent,
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
|
||||
ddmap_entry_eq);
|
||||
ddmap_entry_eq)
|
||||
HT_GENERATE2(double_digest_map, ddmap_entry_s, node, ddmap_entry_hash,
|
||||
ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_);
|
||||
ddmap_entry_eq, 0.6, tor_reallocarray, tor_free_)
|
||||
|
||||
/** Helper: add a single vote_routerstatus_t <b>vrs</b> to the collator
|
||||
* <b>dc</b>, indexing it by its RSA key digest, and by the 2-tuple of
|
||||
|
@ -19,6 +19,7 @@
|
||||
#include "dirvote.h"
|
||||
#include "hibernate.h"
|
||||
#include "keypin.h"
|
||||
#include "main.h"
|
||||
#include "microdesc.h"
|
||||
#include "networkstatus.h"
|
||||
#include "nodelist.h"
|
||||
@ -44,10 +45,6 @@
|
||||
* directory authorities. */
|
||||
#define MAX_UNTRUSTED_NETWORKSTATUSES 16
|
||||
|
||||
extern time_t time_of_process_start; /* from main.c */
|
||||
|
||||
extern long stats_n_seconds_working; /* from main.c */
|
||||
|
||||
/** Total number of routers with measured bandwidth; this is set by
|
||||
* dirserv_count_measured_bws() before the loop in
|
||||
* dirserv_generate_networkstatus_vote_obj() and checked by
|
||||
|
@ -80,9 +80,9 @@ geoip_add_entry(const tor_addr_t *low, const tor_addr_t *high,
|
||||
intptr_t idx;
|
||||
void *idxplus1_;
|
||||
|
||||
if (tor_addr_family(low) != tor_addr_family(high))
|
||||
IF_BUG_ONCE(tor_addr_family(low) != tor_addr_family(high))
|
||||
return;
|
||||
if (tor_addr_compare(high, low, CMP_EXACT) < 0)
|
||||
IF_BUG_ONCE(tor_addr_compare(high, low, CMP_EXACT) < 0)
|
||||
return;
|
||||
|
||||
idxplus1_ = strmap_get_lc(country_idxplus1_by_lc_code, country);
|
||||
@ -110,8 +110,8 @@ geoip_add_entry(const tor_addr_t *low, const tor_addr_t *high,
|
||||
smartlist_add(geoip_ipv4_entries, ent);
|
||||
} else if (tor_addr_family(low) == AF_INET6) {
|
||||
geoip_ipv6_entry_t *ent = tor_malloc_zero(sizeof(geoip_ipv6_entry_t));
|
||||
ent->ip_low = *tor_addr_to_in6(low);
|
||||
ent->ip_high = *tor_addr_to_in6(high);
|
||||
ent->ip_low = *tor_addr_to_in6_assert(low);
|
||||
ent->ip_high = *tor_addr_to_in6_assert(high);
|
||||
ent->country = idx;
|
||||
smartlist_add(geoip_ipv6_entries, ent);
|
||||
}
|
||||
@ -504,7 +504,7 @@ clientmap_entries_eq(const clientmap_entry_t *a, const clientmap_entry_t *b)
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
|
||||
clientmap_entries_eq);
|
||||
clientmap_entries_eq)
|
||||
HT_GENERATE2(clientmap, clientmap_entry_t, node, clientmap_entry_hash,
|
||||
clientmap_entries_eq, 0.6, tor_reallocarray_, tor_free_)
|
||||
|
||||
@ -718,7 +718,7 @@ dirreq_map_ent_hash(const dirreq_map_entry_t *entry)
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(dirreqmap, dirreq_map_entry_t, node, dirreq_map_ent_hash,
|
||||
dirreq_map_ent_eq);
|
||||
dirreq_map_ent_eq)
|
||||
HT_GENERATE2(dirreqmap, dirreq_map_entry_t, node, dirreq_map_ent_hash,
|
||||
dirreq_map_ent_eq, 0.6, tor_reallocarray_, tor_free_)
|
||||
|
||||
|
@ -34,8 +34,6 @@ hibernating, phase 2:
|
||||
#include "router.h"
|
||||
#include "statefile.h"
|
||||
|
||||
extern long stats_n_seconds_working; /* published uptime */
|
||||
|
||||
/** Are we currently awake, asleep, running out of bandwidth, or shutting
|
||||
* down? */
|
||||
static hibernate_state_t hibernate_state = HIBERNATE_STATE_INITIAL;
|
||||
|
@ -93,14 +93,14 @@ return (unsigned) siphash24g(a->ed25519_key, sizeof(a->ed25519_key));
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(rsamap, keypin_ent_st, rsamap_node, keypin_ent_hash_rsa,
|
||||
keypin_ents_eq_rsa);
|
||||
keypin_ents_eq_rsa)
|
||||
HT_GENERATE2(rsamap, keypin_ent_st, rsamap_node, keypin_ent_hash_rsa,
|
||||
keypin_ents_eq_rsa, 0.6, tor_reallocarray, tor_free_);
|
||||
keypin_ents_eq_rsa, 0.6, tor_reallocarray, tor_free_)
|
||||
|
||||
HT_PROTOTYPE(edmap, keypin_ent_st, edmap_node, keypin_ent_hash_ed,
|
||||
keypin_ents_eq_ed);
|
||||
keypin_ents_eq_ed)
|
||||
HT_GENERATE2(edmap, keypin_ent_st, edmap_node, keypin_ent_hash_ed,
|
||||
keypin_ents_eq_ed, 0.6, tor_reallocarray, tor_free_);
|
||||
keypin_ents_eq_ed, 0.6, tor_reallocarray, tor_free_)
|
||||
|
||||
/**
|
||||
* Check whether we already have an entry in the key pinning table for a
|
||||
|
@ -2683,9 +2683,6 @@ get_uptime,(void))
|
||||
return stats_n_seconds_working;
|
||||
}
|
||||
|
||||
extern uint64_t rephist_total_alloc;
|
||||
extern uint32_t rephist_total_num;
|
||||
|
||||
/**
|
||||
* Write current memory usage information to the log.
|
||||
*/
|
||||
|
@ -75,6 +75,14 @@ int tor_main(int argc, char *argv[]);
|
||||
int do_main_loop(void);
|
||||
int tor_init(int argc, char **argv);
|
||||
|
||||
extern time_t time_of_process_start;
|
||||
extern long stats_n_seconds_working;
|
||||
extern int quiet_level;
|
||||
extern int global_read_bucket;
|
||||
extern int global_write_bucket;
|
||||
extern int global_relayed_read_bucket;
|
||||
extern int global_relayed_write_bucket;
|
||||
|
||||
#ifdef MAIN_PRIVATE
|
||||
STATIC void init_connection_lists(void);
|
||||
STATIC void close_closeable_connections(void);
|
||||
|
@ -69,7 +69,7 @@ microdesc_eq_(microdesc_t *a, microdesc_t *b)
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(microdesc_map, microdesc_t, node,
|
||||
microdesc_hash_, microdesc_eq_);
|
||||
microdesc_hash_, microdesc_eq_)
|
||||
HT_GENERATE2(microdesc_map, microdesc_t, node,
|
||||
microdesc_hash_, microdesc_eq_, 0.6,
|
||||
tor_reallocarray_, tor_free_)
|
||||
|
@ -77,7 +77,7 @@ node_id_eq(const node_t *node1, const node_t *node2)
|
||||
return tor_memeq(node1->identity, node2->identity, DIGEST_LEN);
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq);
|
||||
HT_PROTOTYPE(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq)
|
||||
HT_GENERATE2(nodelist_map, node_t, ht_ent, node_id_hash, node_id_eq,
|
||||
0.6, tor_reallocarray_, tor_free_)
|
||||
|
||||
@ -594,10 +594,10 @@ node_get_by_nickname,(const char *nickname, int warn_if_unnamed))
|
||||
"but none is listed as Named in the directory consensus. "
|
||||
"Choosing one arbitrarily.", nickname);
|
||||
}
|
||||
} else if (smartlist_len(matches)>1 && warn_if_unnamed) {
|
||||
} else if (smartlist_len(matches)==1 && warn_if_unnamed) {
|
||||
char fp[HEX_DIGEST_LEN+1];
|
||||
node_t *node = smartlist_get(matches, 0);
|
||||
if (node->name_lookup_warned) {
|
||||
if (! node->name_lookup_warned) {
|
||||
base16_encode(fp, sizeof(fp), node->identity, DIGEST_LEN);
|
||||
log_warn(LD_CONFIG,
|
||||
"You specified a server \"%s\" by name, but the directory "
|
||||
|
@ -38,7 +38,7 @@ typedef struct onion_queue_t {
|
||||
|
||||
/** Array of queues of circuits waiting for CPU workers. An element is NULL
|
||||
* if that queue is empty.*/
|
||||
TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t)
|
||||
static TOR_TAILQ_HEAD(onion_queue_head_t, onion_queue_t)
|
||||
ol_list[MAX_ONION_HANDSHAKE_TYPE+1] = {
|
||||
TOR_TAILQ_HEAD_INITIALIZER(ol_list[0]), /* tap */
|
||||
TOR_TAILQ_HEAD_INITIALIZER(ol_list[1]), /* fast */
|
||||
|
@ -47,7 +47,7 @@ typedef struct tweakset_t {
|
||||
} tweakset_t;
|
||||
|
||||
/** The tweaks to be used with our handshake. */
|
||||
const tweakset_t proto1_tweaks = {
|
||||
static const tweakset_t proto1_tweaks = {
|
||||
#define PROTOID "ntor-curve25519-sha256-1"
|
||||
#define PROTOID_LEN 24
|
||||
PROTOID ":mac",
|
||||
|
@ -102,6 +102,13 @@ STATIC void validate_intro_point_failure(const rend_service_descriptor_t *desc,
|
||||
const char *service_id);
|
||||
|
||||
STATIC void rend_cache_failure_entry_free_(void *entry);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern strmap_t *rend_cache;
|
||||
extern strmap_t *rend_cache_failure;
|
||||
extern digestmap_t *rend_cache_v2_dir;
|
||||
extern size_t rend_cache_total_allocation;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* TOR_RENDCACHE_H */
|
||||
|
@ -2738,7 +2738,7 @@ bidi_map_ent_hash(const bidi_map_entry_t *entry)
|
||||
}
|
||||
|
||||
HT_PROTOTYPE(bidimap, bidi_map_entry_t, node, bidi_map_ent_hash,
|
||||
bidi_map_ent_eq);
|
||||
bidi_map_ent_eq)
|
||||
HT_GENERATE2(bidimap, bidi_map_entry_t, node, bidi_map_ent_hash,
|
||||
bidi_map_ent_eq, 0.6, tor_reallocarray_, tor_free_)
|
||||
|
||||
|
@ -112,5 +112,12 @@ void rep_hist_note_negotiated_link_proto(unsigned link_proto,
|
||||
int started_here);
|
||||
void rep_hist_log_link_protocol_counts(void);
|
||||
|
||||
extern uint64_t rephist_total_alloc;
|
||||
extern uint32_t rephist_total_num;
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
|
||||
extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -40,8 +40,6 @@
|
||||
* and uploading server descriptors, retrying OR connections.
|
||||
**/
|
||||
|
||||
extern long stats_n_seconds_working;
|
||||
|
||||
/************************************************************/
|
||||
|
||||
/*****
|
||||
|
@ -2178,7 +2178,7 @@ scale_array_elements_to_u64(uint64_t *entries_out, const double *entries_in,
|
||||
double scale_factor = 0.0;
|
||||
int i;
|
||||
/* big, but far away from overflowing an int64_t */
|
||||
#define SCALE_TO_U64_MAX ((int64_t) (INT64_MAX / 4))
|
||||
#define SCALE_TO_U64_MAX ((double) (INT64_MAX / 4))
|
||||
|
||||
for (i = 0; i < n_entries; ++i)
|
||||
total += entries_in[i];
|
||||
|
@ -44,6 +44,13 @@ MOCK_DECL(STATIC int, scheduler_compare_channels,
|
||||
(const void *c1_v, const void *c2_v));
|
||||
STATIC uint64_t scheduler_get_queue_heuristic(void);
|
||||
STATIC void scheduler_update_queue_heuristic(time_t now);
|
||||
|
||||
#ifdef TOR_UNIT_TESTS
|
||||
extern smartlist_t *channels_pending;
|
||||
extern struct event *run_sched_ev;
|
||||
extern uint64_t queue_heuristic;
|
||||
extern time_t queue_heuristic_timestamp;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif /* !defined(TOR_SCHEDULER_H) */
|
||||
|
@ -3,6 +3,8 @@
|
||||
* Copyright (c) 2007-2016, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
extern const char tor_git_revision[];
|
||||
|
||||
/** String describing which Tor Git repository version the source was
|
||||
* built from. This string is generated by a bit of shell kludging in
|
||||
* src/or/include.am, and is usually right.
|
||||
|
@ -3,6 +3,7 @@
|
||||
* Copyright (c) 2007-2016, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
extern const char tor_git_revision[];
|
||||
/* Ordinarily defined in tor_main.c; this bit is just here to provide one
|
||||
* since we're not linking to tor_main.c */
|
||||
const char tor_git_revision[] = "";
|
||||
|
@ -133,7 +133,7 @@ static const char EX_EI_BAD_NICKNAME_KEY[] =
|
||||
"/UBWNSyXCFDMqnddb/LZ8+VgttmxfYkpeRzSSmDijN3RbOvYJhhBAgMBAAE=\n"
|
||||
"-----END RSA PUBLIC KEY-----\n";
|
||||
|
||||
const char EX_EI_BAD_TOKENS[] =
|
||||
static const char EX_EI_BAD_TOKENS[] =
|
||||
"extra-info bob 6F314FB01A31162BD5E473D4977AC570DC5B86BB\n"
|
||||
"published 2014-10-05 20:07:00\n"
|
||||
"published 2014-10-05 20:07:00\n"
|
||||
@ -145,8 +145,9 @@ const char EX_EI_BAD_TOKENS[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
;
|
||||
|
||||
const char EX_EI_BAD_TOKENS_FP[] = "6F314FB01A31162BD5E473D4977AC570DC5B86BB";
|
||||
const char EX_EI_BAD_TOKENS_KEY[] =
|
||||
static const char EX_EI_BAD_TOKENS_FP[] =
|
||||
"6F314FB01A31162BD5E473D4977AC570DC5B86BB";
|
||||
static const char EX_EI_BAD_TOKENS_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAL7Z8tz45Tb4tnEFS2sAyjubBV/giSfZdmXRkDV8Jo4xqWqhWFJn7+zN\n"
|
||||
"AXBWBThGeVH2WXrpz5seNJXgZJPxMTMsrnSCGcRXZw0Npti2MkLuQ6+prZa+OPwE\n"
|
||||
@ -210,7 +211,8 @@ static const char EX_EI_GOOD_ED_EI[] =
|
||||
"\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_GOOD_ED_EI_FP[] = "A692FE045C32B5E3A54B52882EF678A9DAC46A73";
|
||||
static const char EX_EI_GOOD_ED_EI_FP[] =
|
||||
"A692FE045C32B5E3A54B52882EF678A9DAC46A73";
|
||||
static const char EX_EI_GOOD_ED_EI_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAM3jdYwjwGxDWYj/vyFkQT7RgeCNIn89Ei6D2+L/fdtFnqrMXOreFFHL\n"
|
||||
@ -237,7 +239,8 @@ static const char EX_EI_ED_MISSING_SIG[] =
|
||||
"\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_MISSING_SIG_FP[] = "2A7521497B91A8437021515308A47491164EDBA1";
|
||||
static const char EX_EI_ED_MISSING_SIG_FP[] =
|
||||
"2A7521497B91A8437021515308A47491164EDBA1";
|
||||
static const char EX_EI_ED_MISSING_SIG_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAOOB8ccxbtk2dB5FuKFhGndDcO6STNjB6KiG0b9X2QwKrOZMfmXSigto\n"
|
||||
@ -260,7 +263,8 @@ static const char EX_EI_ED_MISSING_CERT[] =
|
||||
"\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_MISSING_CERT_FP[] = "E88E43E86015345A323D93D825C33E4AD1028F65";
|
||||
static const char EX_EI_ED_MISSING_CERT_FP[] =
|
||||
"E88E43E86015345A323D93D825C33E4AD1028F65";
|
||||
static const char EX_EI_ED_MISSING_CERT_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBALjA/geb0TR9rp/UPvLhABQpB0XUDYuZAnLkrv+i7AAV7FemTDveEGnc\n"
|
||||
@ -284,7 +288,8 @@ static const char EX_EI_ED_BAD_CERT1[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_BAD_CERT1_FP[] = "F78D8A655607D32281D02144817A4F1D26AE520F";
|
||||
static const char EX_EI_ED_BAD_CERT1_FP[] =
|
||||
"F78D8A655607D32281D02144817A4F1D26AE520F";
|
||||
static const char EX_EI_ED_BAD_CERT1_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAMlR46JhxsCmWYtmIB/JjTV2TUYIhJLmHy+X7FfkK3ZVQvvl9/3GSXFL\n"
|
||||
@ -309,7 +314,8 @@ static const char EX_EI_ED_BAD_CERT2[] =
|
||||
"cVrtU6RVmzldSbyir8V/Z4S/Cm67gYAgjM5gfoFUqDs=\n"
|
||||
"-----END SIGNATURE-----\n"
|
||||
;
|
||||
const char EX_EI_ED_BAD_CERT2_FP[] = "7C2B42E783C4E0EB0CC3BDB37385D16737BACFBD";
|
||||
static const char EX_EI_ED_BAD_CERT2_FP[] =
|
||||
"7C2B42E783C4E0EB0CC3BDB37385D16737BACFBD";
|
||||
static const char EX_EI_ED_BAD_CERT2_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBALAM1F/0XJEsbxIQqb3+ObX/yGVnq9of8Q9sLsmxffD6hwVpCqnV3lTg\n"
|
||||
@ -335,7 +341,8 @@ static const char EX_EI_ED_BAD_SIG1[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_BAD_SIG1_FP[] = "5AC3A538FEEFC6F9FCC5FA0CE64704396C30D62A";
|
||||
static const char EX_EI_ED_BAD_SIG1_FP[] =
|
||||
"5AC3A538FEEFC6F9FCC5FA0CE64704396C30D62A";
|
||||
static const char EX_EI_ED_BAD_SIG1_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAMvb6SuoIkPfBkJgQuo5aQDepAs1kEETZ9VXotMlhB0JJikrqBrAAz+7\n"
|
||||
@ -361,7 +368,8 @@ static const char EX_EI_ED_BAD_SIG2[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_BAD_SIG2_FP[] = "7F1D4DD477E340C6D6B389FAC26EDC746113082F";
|
||||
static const char EX_EI_ED_BAD_SIG2_FP[] =
|
||||
"7F1D4DD477E340C6D6B389FAC26EDC746113082F";
|
||||
static const char EX_EI_ED_BAD_SIG2_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBALzOyfCEUZnvCyhlyMctPkdXg/XRE3Cr6QgyzdKf5kQbUiu2n0FgSHOX\n"
|
||||
@ -388,7 +396,8 @@ static const char EX_EI_ED_MISPLACED_CERT[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_MISPLACED_CERT_FP[] = "3B788BD0CE348BC5CED48313307C78175EB6D0F3";
|
||||
static const char EX_EI_ED_MISPLACED_CERT_FP[] =
|
||||
"3B788BD0CE348BC5CED48313307C78175EB6D0F3";
|
||||
static const char EX_EI_ED_MISPLACED_CERT_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBALTwNqhTprg1oC6bEbDqwIYBoER6prqUXQFbwbFDn+ekXhZj8vltgGwp\n"
|
||||
@ -414,7 +423,8 @@ static const char EX_EI_ED_MISPLACED_SIG[] =
|
||||
"-----END SIGNATURE-----\n"
|
||||
"\n"
|
||||
;
|
||||
const char EX_EI_ED_MISPLACED_SIG_FP[] = "384E40A5DEED4AB1D8A74F1FCBDB18B7C24A8284";
|
||||
static const char EX_EI_ED_MISPLACED_SIG_FP[] =
|
||||
"384E40A5DEED4AB1D8A74F1FCBDB18B7C24A8284";
|
||||
static const char EX_EI_ED_MISPLACED_SIG_KEY[] =
|
||||
"-----BEGIN RSA PUBLIC KEY-----\n"
|
||||
"MIGJAoGBAK0HgOCG/6433VCrwz/vhk3cKmyOfenCp0GZ4DIUwPWt4DeyP4nTbN6T\n"
|
||||
|
@ -14,6 +14,7 @@ static unsigned fill_heap_buffer_memwipe(void) __attribute__((noinline));
|
||||
static unsigned fill_heap_buffer_nothing(void) __attribute__((noinline));
|
||||
static unsigned check_a_buffer(void) __attribute__((noinline));
|
||||
|
||||
extern const char *s; /* Make the linkage global */
|
||||
const char *s = NULL;
|
||||
|
||||
#define BUF_LEN 2048
|
||||
|
@ -1124,62 +1124,6 @@ static struct testcase_t test_array[] = {
|
||||
END_OF_TESTCASES
|
||||
};
|
||||
|
||||
extern struct testcase_t accounting_tests[];
|
||||
extern struct testcase_t addr_tests[];
|
||||
extern struct testcase_t address_tests[];
|
||||
extern struct testcase_t buffer_tests[];
|
||||
extern struct testcase_t cell_format_tests[];
|
||||
extern struct testcase_t cell_queue_tests[];
|
||||
extern struct testcase_t channel_tests[];
|
||||
extern struct testcase_t channeltls_tests[];
|
||||
extern struct testcase_t checkdir_tests[];
|
||||
extern struct testcase_t circuitlist_tests[];
|
||||
extern struct testcase_t circuitmux_tests[];
|
||||
extern struct testcase_t compat_libevent_tests[];
|
||||
extern struct testcase_t config_tests[];
|
||||
extern struct testcase_t connection_tests[];
|
||||
extern struct testcase_t container_tests[];
|
||||
extern struct testcase_t controller_tests[];
|
||||
extern struct testcase_t controller_event_tests[];
|
||||
extern struct testcase_t crypto_tests[];
|
||||
extern struct testcase_t dir_tests[];
|
||||
extern struct testcase_t dir_handle_get_tests[];
|
||||
extern struct testcase_t entryconn_tests[];
|
||||
extern struct testcase_t entrynodes_tests[];
|
||||
extern struct testcase_t guardfraction_tests[];
|
||||
extern struct testcase_t extorport_tests[];
|
||||
extern struct testcase_t hs_tests[];
|
||||
extern struct testcase_t introduce_tests[];
|
||||
extern struct testcase_t keypin_tests[];
|
||||
extern struct testcase_t link_handshake_tests[];
|
||||
extern struct testcase_t logging_tests[];
|
||||
extern struct testcase_t microdesc_tests[];
|
||||
extern struct testcase_t nodelist_tests[];
|
||||
extern struct testcase_t oom_tests[];
|
||||
extern struct testcase_t options_tests[];
|
||||
extern struct testcase_t policy_tests[];
|
||||
extern struct testcase_t procmon_tests[];
|
||||
extern struct testcase_t pubsub_tests[];
|
||||
extern struct testcase_t pt_tests[];
|
||||
extern struct testcase_t relay_tests[];
|
||||
extern struct testcase_t relaycell_tests[];
|
||||
extern struct testcase_t rend_cache_tests[];
|
||||
extern struct testcase_t replaycache_tests[];
|
||||
extern struct testcase_t router_tests[];
|
||||
extern struct testcase_t routerkeys_tests[];
|
||||
extern struct testcase_t routerlist_tests[];
|
||||
extern struct testcase_t routerset_tests[];
|
||||
extern struct testcase_t scheduler_tests[];
|
||||
extern struct testcase_t socks_tests[];
|
||||
extern struct testcase_t status_tests[];
|
||||
extern struct testcase_t thread_tests[];
|
||||
extern struct testcase_t tortls_tests[];
|
||||
extern struct testcase_t util_tests[];
|
||||
extern struct testcase_t util_format_tests[];
|
||||
extern struct testcase_t util_process_tests[];
|
||||
extern struct testcase_t dns_tests[];
|
||||
extern struct testcase_t handle_tests[];
|
||||
|
||||
struct testgroup_t testgroups[] = {
|
||||
{ "", test_array },
|
||||
{ "accounting/", accounting_tests },
|
||||
|
@ -163,11 +163,86 @@ struct crypto_pk_t *pk_generate(int idx);
|
||||
|
||||
#define CALLED(mock_name) US_CONCAT_2_(NS(mock_name), called)
|
||||
#define NS_DECL(retval, mock_fn, args) \
|
||||
extern int CALLED(mock_fn); \
|
||||
static retval NS(mock_fn) args; int CALLED(mock_fn) = 0
|
||||
#define NS_MOCK(name) MOCK(name, NS(name))
|
||||
#define NS_UNMOCK(name) UNMOCK(name)
|
||||
|
||||
extern const struct testcase_setup_t passthrough_setup;
|
||||
|
||||
extern struct testcase_t accounting_tests[];
|
||||
extern struct testcase_t addr_tests[];
|
||||
extern struct testcase_t address_tests[];
|
||||
extern struct testcase_t buffer_tests[];
|
||||
extern struct testcase_t cell_format_tests[];
|
||||
extern struct testcase_t cell_queue_tests[];
|
||||
extern struct testcase_t channel_tests[];
|
||||
extern struct testcase_t channeltls_tests[];
|
||||
extern struct testcase_t checkdir_tests[];
|
||||
extern struct testcase_t circuitlist_tests[];
|
||||
extern struct testcase_t circuitmux_tests[];
|
||||
extern struct testcase_t compat_libevent_tests[];
|
||||
extern struct testcase_t config_tests[];
|
||||
extern struct testcase_t connection_tests[];
|
||||
extern struct testcase_t container_tests[];
|
||||
extern struct testcase_t controller_tests[];
|
||||
extern struct testcase_t controller_event_tests[];
|
||||
extern struct testcase_t crypto_tests[];
|
||||
extern struct testcase_t dir_tests[];
|
||||
extern struct testcase_t dir_handle_get_tests[];
|
||||
extern struct testcase_t entryconn_tests[];
|
||||
extern struct testcase_t entrynodes_tests[];
|
||||
extern struct testcase_t guardfraction_tests[];
|
||||
extern struct testcase_t extorport_tests[];
|
||||
extern struct testcase_t hs_tests[];
|
||||
extern struct testcase_t introduce_tests[];
|
||||
extern struct testcase_t keypin_tests[];
|
||||
extern struct testcase_t link_handshake_tests[];
|
||||
extern struct testcase_t logging_tests[];
|
||||
extern struct testcase_t microdesc_tests[];
|
||||
extern struct testcase_t nodelist_tests[];
|
||||
extern struct testcase_t oom_tests[];
|
||||
extern struct testcase_t options_tests[];
|
||||
extern struct testcase_t policy_tests[];
|
||||
extern struct testcase_t procmon_tests[];
|
||||
extern struct testcase_t pubsub_tests[];
|
||||
extern struct testcase_t pt_tests[];
|
||||
extern struct testcase_t relay_tests[];
|
||||
extern struct testcase_t relaycell_tests[];
|
||||
extern struct testcase_t rend_cache_tests[];
|
||||
extern struct testcase_t replaycache_tests[];
|
||||
extern struct testcase_t router_tests[];
|
||||
extern struct testcase_t routerkeys_tests[];
|
||||
extern struct testcase_t routerlist_tests[];
|
||||
extern struct testcase_t routerset_tests[];
|
||||
extern struct testcase_t scheduler_tests[];
|
||||
extern struct testcase_t socks_tests[];
|
||||
extern struct testcase_t status_tests[];
|
||||
extern struct testcase_t thread_tests[];
|
||||
extern struct testcase_t tortls_tests[];
|
||||
extern struct testcase_t util_tests[];
|
||||
extern struct testcase_t util_format_tests[];
|
||||
extern struct testcase_t util_process_tests[];
|
||||
extern struct testcase_t dns_tests[];
|
||||
extern struct testcase_t handle_tests[];
|
||||
|
||||
extern struct testcase_t slow_crypto_tests[];
|
||||
extern struct testcase_t slow_util_tests[];
|
||||
|
||||
extern struct testgroup_t testgroups[];
|
||||
|
||||
extern const char AUTHORITY_CERT_1[];
|
||||
extern const char AUTHORITY_SIGNKEY_1[];
|
||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST[];
|
||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST256[];
|
||||
extern const char AUTHORITY_CERT_2[];
|
||||
extern const char AUTHORITY_SIGNKEY_2[];
|
||||
extern const char AUTHORITY_SIGNKEY_B_DIGEST[];
|
||||
extern const char AUTHORITY_SIGNKEY_B_DIGEST256[];
|
||||
extern const char AUTHORITY_CERT_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_C_DIGEST[];
|
||||
extern const char AUTHORITY_SIGNKEY_C_DIGEST256[];
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -28,6 +28,9 @@ int a_tangled_web(int x) NOINLINE;
|
||||
int we_weave(int x) NOINLINE;
|
||||
static void abort_handler(int s) NORETURN;
|
||||
|
||||
#ifdef HAVE_CFLAG_WNULL_DEREFERENCE
|
||||
DISABLE_GCC_WARNING(null-dereference)
|
||||
#endif
|
||||
int
|
||||
crash(int x)
|
||||
{
|
||||
@ -47,6 +50,9 @@ crash(int x)
|
||||
crashtype *= x;
|
||||
return crashtype;
|
||||
}
|
||||
#ifdef HAVE_CFLAG_WNULL_DEREFERENCE
|
||||
ENABLE_GCC_WARNING(null-dereference)
|
||||
#endif
|
||||
|
||||
int
|
||||
oh_what(int x)
|
||||
|
@ -695,9 +695,9 @@ test_buffers_zlib_fin_at_chunk_end(void *arg)
|
||||
tor_free(msg);
|
||||
}
|
||||
|
||||
const uint8_t *tls_read_ptr;
|
||||
int n_remaining;
|
||||
int next_reply_val[16];
|
||||
static const uint8_t *tls_read_ptr;
|
||||
static int n_remaining;
|
||||
static int next_reply_val[16];
|
||||
|
||||
static int
|
||||
mock_tls_read(tor_tls_t *tls, char *cp, size_t len)
|
||||
|
@ -20,9 +20,6 @@
|
||||
#include "test.h"
|
||||
#include "fakechans.h"
|
||||
|
||||
/* This comes from channel.c */
|
||||
extern uint64_t estimated_total_queue_size;
|
||||
|
||||
static int test_chan_accept_cells = 0;
|
||||
static int test_chan_fixed_cells_recved = 0;
|
||||
static cell_t * test_chan_last_seen_fixed_cell_ptr = NULL;
|
||||
@ -33,7 +30,7 @@ static int test_destroy_not_pending_calls = 0;
|
||||
static int test_doesnt_want_writes_count = 0;
|
||||
static int test_dumpstats_calls = 0;
|
||||
static int test_has_waiting_cells_count = 0;
|
||||
static double test_overhead_estimate = 1.0f;
|
||||
static double test_overhead_estimate = 1.0;
|
||||
static int test_releases_count = 0;
|
||||
static circuitmux_t *test_target_cmux = NULL;
|
||||
static unsigned int test_cmux_cells = 0;
|
||||
@ -792,7 +789,7 @@ test_channel_incoming(void *arg)
|
||||
/* Accept cells to lower layer */
|
||||
test_chan_accept_cells = 1;
|
||||
/* Use default overhead factor */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
|
||||
ch = new_fake_channel();
|
||||
tt_assert(ch);
|
||||
@ -881,7 +878,7 @@ test_channel_lifecycle(void *arg)
|
||||
/* Accept cells to lower layer */
|
||||
test_chan_accept_cells = 1;
|
||||
/* Use default overhead factor */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
|
||||
ch1 = new_fake_channel();
|
||||
tt_assert(ch1);
|
||||
@ -989,7 +986,7 @@ test_channel_lifecycle_2(void *arg)
|
||||
/* Accept cells to lower layer */
|
||||
test_chan_accept_cells = 1;
|
||||
/* Use default overhead factor */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
|
||||
ch = new_fake_channel();
|
||||
tt_assert(ch);
|
||||
@ -1136,7 +1133,7 @@ test_channel_multi(void *arg)
|
||||
/* Accept cells to lower layer */
|
||||
test_chan_accept_cells = 1;
|
||||
/* Use default overhead factor */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
|
||||
ch1 = new_fake_channel();
|
||||
tt_assert(ch1);
|
||||
@ -1444,7 +1441,7 @@ test_channel_queue_incoming(void *arg)
|
||||
/* Accept cells to lower layer */
|
||||
test_chan_accept_cells = 1;
|
||||
/* Use default overhead factor */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
|
||||
ch = new_fake_channel();
|
||||
tt_assert(ch);
|
||||
@ -1584,16 +1581,16 @@ test_channel_queue_size(void *arg)
|
||||
/* One cell, times an overhead factor of 1.0 */
|
||||
tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
|
||||
/* Try a different overhead factor */
|
||||
test_overhead_estimate = 0.5f;
|
||||
test_overhead_estimate = 0.5;
|
||||
/* This one should be ignored since it's below 1.0 */
|
||||
channel_update_xmit_queue_size(ch);
|
||||
tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
|
||||
/* Now try a larger one */
|
||||
test_overhead_estimate = 2.0f;
|
||||
test_overhead_estimate = 2.0;
|
||||
channel_update_xmit_queue_size(ch);
|
||||
tt_u64_op(ch->bytes_queued_for_xmit, ==, 1024);
|
||||
/* Go back to 1.0 */
|
||||
test_overhead_estimate = 1.0f;
|
||||
test_overhead_estimate = 1.0;
|
||||
channel_update_xmit_queue_size(ch);
|
||||
tt_u64_op(ch->bytes_queued_for_xmit, ==, 512);
|
||||
/* Check the global estimate too */
|
||||
|
@ -185,7 +185,7 @@ test_channeltls_overhead_estimate(void *arg)
|
||||
const char test_digest[DIGEST_LEN] = {
|
||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a,
|
||||
0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 0x10, 0x11, 0x12, 0x13, 0x14 };
|
||||
float r;
|
||||
double r;
|
||||
channel_tls_t *tlschan = NULL;
|
||||
|
||||
(void)arg;
|
||||
@ -206,31 +206,31 @@ test_channeltls_overhead_estimate(void *arg)
|
||||
ch = channel_tls_connect(&test_addr, 567, test_digest);
|
||||
tt_assert(ch != NULL);
|
||||
|
||||
/* First case: silly low ratios should get clamped to 1.0f */
|
||||
/* First case: silly low ratios should get clamped to 1.0 */
|
||||
tlschan = BASE_CHAN_TO_TLS(ch);
|
||||
tt_assert(tlschan != NULL);
|
||||
tlschan->conn->bytes_xmitted = 128;
|
||||
tlschan->conn->bytes_xmitted_by_tls = 64;
|
||||
r = ch->get_overhead_estimate(ch);
|
||||
tt_assert(fabsf(r - 1.0f) < 1E-12);
|
||||
tt_assert(fabs(r - 1.0) < 1E-12);
|
||||
|
||||
tlschan->conn->bytes_xmitted_by_tls = 127;
|
||||
r = ch->get_overhead_estimate(ch);
|
||||
tt_assert(fabsf(r - 1.0f) < 1E-12);
|
||||
tt_assert(fabs(r - 1.0) < 1E-12);
|
||||
|
||||
/* Now middle of the range */
|
||||
tlschan->conn->bytes_xmitted_by_tls = 192;
|
||||
r = ch->get_overhead_estimate(ch);
|
||||
tt_assert(fabsf(r - 1.5f) < 1E-12);
|
||||
tt_assert(fabs(r - 1.5) < 1E-12);
|
||||
|
||||
/* Now above the 2.0f clamp */
|
||||
/* Now above the 2.0 clamp */
|
||||
tlschan->conn->bytes_xmitted_by_tls = 257;
|
||||
r = ch->get_overhead_estimate(ch);
|
||||
tt_assert(fabsf(r - 2.0f) < 1E-12);
|
||||
tt_assert(fabs(r - 2.0) < 1E-12);
|
||||
|
||||
tlschan->conn->bytes_xmitted_by_tls = 512;
|
||||
r = ch->get_overhead_estimate(ch);
|
||||
tt_assert(fabsf(r - 2.0f) < 1E-12);
|
||||
tt_assert(fabs(r - 2.0) < 1E-12);
|
||||
|
||||
done:
|
||||
if (ch) {
|
||||
|
@ -18,10 +18,6 @@
|
||||
#include <openssl/evp.h>
|
||||
#include <openssl/rand.h>
|
||||
|
||||
extern const char AUTHORITY_SIGNKEY_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST[];
|
||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST256[];
|
||||
|
||||
/** Run unit tests for Diffie-Hellman functionality. */
|
||||
static void
|
||||
test_crypto_dh(void *arg)
|
||||
@ -277,9 +273,6 @@ test_crypto_rng_range(void *arg)
|
||||
;
|
||||
}
|
||||
|
||||
extern int break_strongest_rng_fallback;
|
||||
extern int break_strongest_rng_syscall;
|
||||
|
||||
static void
|
||||
test_crypto_rng_strongest(void *arg)
|
||||
{
|
||||
|
@ -3,6 +3,8 @@
|
||||
* Copyright (c) 2007-2016, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
#include "test.h"
|
||||
|
||||
/* Our unit test expect that the AUTHORITY_CERT_* public keys will sort
|
||||
* in this order. */
|
||||
#define AUTHORITY_CERT_A AUTHORITY_CERT_3
|
||||
|
@ -21,13 +21,6 @@ networkstatus_t * dir_common_add_rs_and_parse(networkstatus_t *vote,
|
||||
crypto_pk_t *sign_skey, int *n_vrs,
|
||||
time_t now, int clear_rl);
|
||||
|
||||
extern const char AUTHORITY_CERT_1[];
|
||||
extern const char AUTHORITY_SIGNKEY_1[];
|
||||
extern const char AUTHORITY_CERT_2[];
|
||||
extern const char AUTHORITY_SIGNKEY_2[];
|
||||
extern const char AUTHORITY_CERT_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_3[];
|
||||
|
||||
/** Initialize and set auth certs and keys
|
||||
* Returns 0 on success, -1 on failure. Clean up handled by caller.
|
||||
*/
|
||||
|
@ -38,7 +38,15 @@
|
||||
#include <dirent.h>
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
DISABLE_GCC_WARNING(overlength-strings)
|
||||
/* We allow huge string constants in the unit tests, but not in the code
|
||||
* at large. */
|
||||
#endif
|
||||
#include "vote_descriptors.inc"
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
ENABLE_GCC_WARNING(overlength-strings)
|
||||
#endif
|
||||
|
||||
#define NS_MODULE dir_handle_get
|
||||
|
||||
@ -1162,8 +1170,6 @@ test_dir_handle_get_server_keys_all_not_found(void* data)
|
||||
|
||||
#define TEST_CERTIFICATE AUTHORITY_CERT_3
|
||||
#define TEST_SIGNING_KEY AUTHORITY_SIGNKEY_A_DIGEST
|
||||
extern const char AUTHORITY_CERT_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_A_DIGEST[];
|
||||
|
||||
static const char TEST_CERT_IDENT_KEY[] =
|
||||
"D867ACF56A9D229B35C25F0090BC9867E906BE69";
|
||||
|
@ -12,8 +12,8 @@ typedef struct demo_t {
|
||||
int val;
|
||||
} demo_t;
|
||||
|
||||
HANDLE_DECL(demo, demo_t, static);
|
||||
HANDLE_IMPL(demo, demo_t, static);
|
||||
HANDLE_DECL(demo, demo_t, static)
|
||||
HANDLE_IMPL(demo, demo_t, static)
|
||||
|
||||
static demo_t *
|
||||
demo_new(int val)
|
||||
|
@ -16,7 +16,15 @@
|
||||
#include "test.h"
|
||||
#include "test_helpers.h"
|
||||
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
DISABLE_GCC_WARNING(overlength-strings)
|
||||
/* We allow huge string constants in the unit tests, but not in the code
|
||||
* at large. */
|
||||
#endif
|
||||
#include "test_descriptors.inc"
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
ENABLE_GCC_WARNING(overlength-strings)
|
||||
#endif
|
||||
|
||||
/* Return a statically allocated string representing yesterday's date
|
||||
* in ISO format. We use it so that state file items are not found to
|
||||
|
@ -9,8 +9,6 @@
|
||||
#define RENDSERVICE_PRIVATE
|
||||
#include "rendservice.h"
|
||||
|
||||
extern const char AUTHORITY_SIGNKEY_1[];
|
||||
|
||||
static uint8_t v0_test_plaintext[] =
|
||||
/* 20 bytes of rendezvous point nickname */
|
||||
{ 0x4e, 0x69, 0x63, 0x6b, 0x6e, 0x61, 0x6d, 0x65,
|
||||
|
@ -16,7 +16,7 @@
|
||||
|
||||
#include "test.h"
|
||||
|
||||
var_cell_t *mock_got_var_cell = NULL;
|
||||
static var_cell_t *mock_got_var_cell = NULL;
|
||||
|
||||
static void
|
||||
mock_write_var_cell(const var_cell_t *vc, or_connection_t *conn)
|
||||
|
@ -490,6 +490,11 @@ test_md_generate(void *arg)
|
||||
routerinfo_free(ri);
|
||||
}
|
||||
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
DISABLE_GCC_WARNING(overlength-strings)
|
||||
/* We allow huge string constants in the unit tests, but not in the code
|
||||
* at large. */
|
||||
#endif
|
||||
/* Taken at random from my ~/.tor/cached-microdescs file and then
|
||||
* hand-munged */
|
||||
static const char MD_PARSE_TEST_DATA[] =
|
||||
@ -645,6 +650,9 @@ static const char MD_PARSE_TEST_DATA[] =
|
||||
"id rsa1024 2A8wYpHxnkKJ92orocvIQBzeHlE\n"
|
||||
"p6 allow 80\n"
|
||||
;
|
||||
#ifdef HAVE_CFLAG_WOVERLENGTH_STRINGS
|
||||
ENABLE_GCC_WARNING(overlength-strings)
|
||||
#endif
|
||||
|
||||
/** More tests for parsing different kinds of microdescriptors, and getting
|
||||
* invalid digests trackd from them. */
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
#define ROUTERSET_PRIVATE
|
||||
#include "routerset.h"
|
||||
|
||||
#include "main.h"
|
||||
#include "log_test_helpers.h"
|
||||
|
||||
#include "sandbox.h"
|
||||
@ -572,8 +572,6 @@ test_options_validate__contactinfo(void *ignored)
|
||||
tor_free(msg);
|
||||
}
|
||||
|
||||
extern int quiet_level;
|
||||
|
||||
static void
|
||||
test_options_validate__logs(void *ignored)
|
||||
{
|
||||
|
@ -778,8 +778,8 @@ test_policies_reject_port_address(void *arg)
|
||||
UNMOCK(get_configured_ports);
|
||||
}
|
||||
|
||||
smartlist_t *mock_ipv4_addrs = NULL;
|
||||
smartlist_t *mock_ipv6_addrs = NULL;
|
||||
static smartlist_t *mock_ipv4_addrs = NULL;
|
||||
static smartlist_t *mock_ipv6_addrs = NULL;
|
||||
|
||||
/* mock get_interface_address6_list, returning a deep copy of the template
|
||||
* address list ipv4_interface_address_list or ipv6_interface_address_list */
|
||||
|
@ -95,7 +95,7 @@ test_relaycell_resolved(void *arg)
|
||||
tt_int_op(srm_ncalls, OP_EQ, 1); \
|
||||
tt_ptr_op(srm_conn, OP_EQ, entryconn); \
|
||||
tt_int_op(srm_atype, OP_EQ, (atype)); \
|
||||
if (answer) { \
|
||||
if ((answer) != NULL) { \
|
||||
tt_int_op(srm_alen, OP_EQ, sizeof(answer)-1); \
|
||||
tt_int_op(srm_alen, OP_LT, 512); \
|
||||
tt_int_op(srm_answer_is_set, OP_EQ, 1); \
|
||||
|
@ -20,11 +20,6 @@ static const int TIME_IN_THE_PAST = -(REND_CACHE_MAX_AGE + \
|
||||
REND_CACHE_MAX_SKEW + 10);
|
||||
static const int TIME_IN_THE_FUTURE = REND_CACHE_MAX_SKEW + 10;
|
||||
|
||||
extern strmap_t *rend_cache;
|
||||
extern digestmap_t *rend_cache_v2_dir;
|
||||
extern strmap_t *rend_cache_failure;
|
||||
extern size_t rend_cache_total_allocation;
|
||||
|
||||
static rend_data_t *
|
||||
mock_rend_data(const char *onion_address)
|
||||
{
|
||||
|
@ -24,13 +24,6 @@
|
||||
#include "test.h"
|
||||
#include "test_dir_common.h"
|
||||
|
||||
extern const char AUTHORITY_CERT_1[];
|
||||
extern const char AUTHORITY_SIGNKEY_1[];
|
||||
extern const char AUTHORITY_CERT_2[];
|
||||
extern const char AUTHORITY_SIGNKEY_2[];
|
||||
extern const char AUTHORITY_CERT_3[];
|
||||
extern const char AUTHORITY_SIGNKEY_3[];
|
||||
|
||||
void construct_consensus(char **consensus_text_md);
|
||||
|
||||
/* 4 digests + 3 sep + pre + post + NULL */
|
||||
@ -423,7 +416,7 @@ test_router_pick_directory_server_impl(void *arg)
|
||||
networkstatus_vote_free(con_md);
|
||||
}
|
||||
|
||||
connection_t *mocked_connection = NULL;
|
||||
static connection_t *mocked_connection = NULL;
|
||||
|
||||
/* Mock connection_get_by_type_addr_port_purpose by returning
|
||||
* mocked_connection. */
|
||||
|
@ -432,7 +432,7 @@ NS(test_main)(void *arg)
|
||||
NS_DECL(addr_policy_t *, router_parse_addr_policy_item_from_string,
|
||||
(const char *s, int assume_action, int *malformed_list));
|
||||
|
||||
addr_policy_t *NS(mock_addr_policy);
|
||||
static addr_policy_t *NS(mock_addr_policy);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -480,7 +480,7 @@ NS(router_parse_addr_policy_item_from_string)(const char *s,
|
||||
NS_DECL(addr_policy_t *, router_parse_addr_policy_item_from_string,
|
||||
(const char *s, int assume_action, int *bogus));
|
||||
|
||||
addr_policy_t *NS(mock_addr_policy);
|
||||
static addr_policy_t *NS(mock_addr_policy);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -527,7 +527,7 @@ NS(router_parse_addr_policy_item_from_string)(const char *s, int assume_action,
|
||||
NS_DECL(addr_policy_t *, router_parse_addr_policy_item_from_string,
|
||||
(const char *s, int assume_action, int *bad));
|
||||
|
||||
addr_policy_t *NS(mock_addr_policy);
|
||||
static addr_policy_t *NS(mock_addr_policy);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1477,7 +1477,7 @@ NS(test_main)(void *arg)
|
||||
* routerset or routerinfo.
|
||||
*/
|
||||
|
||||
node_t NS(mock_node);
|
||||
static node_t NS(mock_node);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1504,7 +1504,7 @@ NS(test_main)(void *arg)
|
||||
* routerset and no routerinfo.
|
||||
*/
|
||||
|
||||
node_t NS(mock_node);
|
||||
static node_t NS(mock_node);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1603,7 +1603,7 @@ NS(test_main)(void *arg)
|
||||
|
||||
NS_DECL(const node_t *, node_get_by_nickname,
|
||||
(const char *nickname, int warn_if_unused));
|
||||
const char *NS(mock_nickname);
|
||||
static const char *NS(mock_nickname);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1652,8 +1652,8 @@ NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
|
||||
|
||||
NS_DECL(const node_t *, node_get_by_nickname,
|
||||
(const char *nickname, int warn_if_unused));
|
||||
const char *NS(mock_nickname);
|
||||
node_t NS(mock_node);
|
||||
static const char *NS(mock_nickname);
|
||||
static node_t NS(mock_node);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1702,8 +1702,8 @@ NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
|
||||
|
||||
NS_DECL(const node_t *, node_get_by_nickname,
|
||||
(const char *nickname, int warn_if_unused));
|
||||
char *NS(mock_nickname);
|
||||
node_t NS(mock_node);
|
||||
static char *NS(mock_nickname);
|
||||
static node_t NS(mock_node);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1754,7 +1754,7 @@ NS(node_get_by_nickname)(const char *nickname, int warn_if_unused)
|
||||
|
||||
NS_DECL(smartlist_t *, nodelist_get_list, (void));
|
||||
|
||||
smartlist_t *NS(mock_smartlist);
|
||||
static smartlist_t *NS(mock_smartlist);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
@ -1800,8 +1800,8 @@ NS(nodelist_get_list)(void)
|
||||
|
||||
NS_DECL(smartlist_t *, nodelist_get_list, (void));
|
||||
|
||||
smartlist_t *NS(mock_smartlist);
|
||||
node_t NS(mock_node);
|
||||
static smartlist_t *NS(mock_smartlist);
|
||||
static node_t NS(mock_node);
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
|
@ -24,12 +24,6 @@
|
||||
#include "test.h"
|
||||
#include "fakechans.h"
|
||||
|
||||
/* Statics in scheduler.c exposed to the test suite */
|
||||
extern smartlist_t *channels_pending;
|
||||
extern struct event *run_sched_ev;
|
||||
extern uint64_t queue_heuristic;
|
||||
extern time_t queue_heuristic_timestamp;
|
||||
|
||||
/* Event base for scheduelr tests */
|
||||
static struct event_base *mock_event_base = NULL;
|
||||
|
||||
|
@ -18,9 +18,6 @@
|
||||
#include "or.h"
|
||||
#include "test.h"
|
||||
|
||||
extern struct testcase_t slow_crypto_tests[];
|
||||
extern struct testcase_t slow_util_tests[];
|
||||
|
||||
struct testgroup_t testgroups[] = {
|
||||
{ "slow/crypto/", slow_crypto_tests },
|
||||
{ "slow/util/", slow_util_tests },
|
||||
|
@ -34,7 +34,7 @@ socks_test_cleanup(const struct testcase_t *testcase, void *ptr)
|
||||
return 1;
|
||||
}
|
||||
|
||||
const struct testcase_setup_t socks_setup = {
|
||||
static const struct testcase_setup_t socks_setup = {
|
||||
socks_test_setup, socks_test_cleanup
|
||||
};
|
||||
|
||||
|
@ -310,8 +310,6 @@ NS_DECL(void, logv, (int severity, log_domain_mask_t domain,
|
||||
NS_DECL(int, server_mode, (const or_options_t *options));
|
||||
|
||||
static routerinfo_t *mock_routerinfo;
|
||||
extern int onion_handshakes_requested[MAX_ONION_HANDSHAKE_TYPE+1];
|
||||
extern int onion_handshakes_assigned[MAX_ONION_HANDSHAKE_TYPE+1];
|
||||
|
||||
static void
|
||||
NS(test_main)(void *arg)
|
||||
|
@ -8,6 +8,7 @@
|
||||
#ifdef _WIN32
|
||||
#include <winsock2.h>
|
||||
#endif
|
||||
#include <math.h>
|
||||
|
||||
#ifdef __GNUC__
|
||||
#define GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__)
|
||||
@ -50,9 +51,6 @@
|
||||
#include "log_test_helpers.h"
|
||||
#define NS_MODULE tortls
|
||||
|
||||
extern tor_tls_context_t *server_tls_context;
|
||||
extern tor_tls_context_t *client_tls_context;
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER >= OPENSSL_V_SERIES(1,1,0) \
|
||||
&& !defined(LIBRESSL_VERSION_NUMBER)
|
||||
#define OPENSSL_OPAQUE
|
||||
@ -277,8 +275,6 @@ test_tortls_get_state_description(void *ignored)
|
||||
tor_free(tls);
|
||||
}
|
||||
|
||||
extern int tor_tls_object_ex_data_index;
|
||||
|
||||
static void
|
||||
test_tortls_get_by_ssl(void *ignored)
|
||||
{
|
||||
@ -789,8 +785,6 @@ get_cipher_by_id(uint16_t id)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
extern uint16_t v2_cipher_list[];
|
||||
|
||||
static void
|
||||
test_tortls_classify_client_ciphers(void *ignored)
|
||||
{
|
||||
@ -1183,9 +1177,6 @@ test_tortls_get_forced_write_size(void *ignored)
|
||||
tor_free(tls);
|
||||
}
|
||||
|
||||
extern uint64_t total_bytes_written_over_tls;
|
||||
extern uint64_t total_bytes_written_by_tls;
|
||||
|
||||
static void
|
||||
test_tortls_get_write_overhead_ratio(void *ignored)
|
||||
{
|
||||
@ -1194,17 +1185,17 @@ test_tortls_get_write_overhead_ratio(void *ignored)
|
||||
|
||||
total_bytes_written_over_tls = 0;
|
||||
ret = tls_get_write_overhead_ratio();
|
||||
tt_int_op(ret, OP_EQ, 1.0);
|
||||
tt_double_op(fabs(ret - 1.0), OP_LT, 1E-12);
|
||||
|
||||
total_bytes_written_by_tls = 10;
|
||||
total_bytes_written_over_tls = 1;
|
||||
ret = tls_get_write_overhead_ratio();
|
||||
tt_int_op(ret, OP_EQ, 10.0);
|
||||
tt_double_op(fabs(ret - 10.0), OP_LT, 1E-12);
|
||||
|
||||
total_bytes_written_by_tls = 10;
|
||||
total_bytes_written_over_tls = 2;
|
||||
ret = tls_get_write_overhead_ratio();
|
||||
tt_int_op(ret, OP_EQ, 5.0);
|
||||
tt_double_op(fabs(ret - 5.0), OP_LT, 1E-12);
|
||||
|
||||
done:
|
||||
(void)0;
|
||||
|
@ -30,6 +30,9 @@
|
||||
#include <ctype.h>
|
||||
#include <float.h>
|
||||
|
||||
#define INFINITY_DBL ((double)INFINITY)
|
||||
#define NAN_DBL ((double)NAN)
|
||||
|
||||
/* XXXX this is a minimal wrapper to make the unit tests compile with the
|
||||
* changed tor_timegm interface. */
|
||||
static time_t
|
||||
@ -1472,24 +1475,24 @@ test_util_strmisc(void *arg)
|
||||
|
||||
{
|
||||
/* Test parse_double */
|
||||
double d = tor_parse_double("10", 0, UINT64_MAX,&i,NULL);
|
||||
double d = tor_parse_double("10", 0, (double)UINT64_MAX,&i,NULL);
|
||||
tt_int_op(1,OP_EQ, i);
|
||||
tt_assert(DBL_TO_U64(d) == 10);
|
||||
d = tor_parse_double("0", 0, UINT64_MAX,&i,NULL);
|
||||
d = tor_parse_double("0", 0, (double)UINT64_MAX,&i,NULL);
|
||||
tt_int_op(1,OP_EQ, i);
|
||||
tt_assert(DBL_TO_U64(d) == 0);
|
||||
d = tor_parse_double(" ", 0, UINT64_MAX,&i,NULL);
|
||||
d = tor_parse_double(" ", 0, (double)UINT64_MAX,&i,NULL);
|
||||
tt_int_op(0,OP_EQ, i);
|
||||
d = tor_parse_double(".0a", 0, UINT64_MAX,&i,NULL);
|
||||
d = tor_parse_double(".0a", 0, (double)UINT64_MAX,&i,NULL);
|
||||
tt_int_op(0,OP_EQ, i);
|
||||
d = tor_parse_double(".0a", 0, UINT64_MAX,&i,&cp);
|
||||
d = tor_parse_double(".0a", 0, (double)UINT64_MAX,&i,&cp);
|
||||
tt_int_op(1,OP_EQ, i);
|
||||
d = tor_parse_double("-.0", 0, UINT64_MAX,&i,NULL);
|
||||
d = tor_parse_double("-.0", 0, (double)UINT64_MAX,&i,NULL);
|
||||
tt_int_op(1,OP_EQ, i);
|
||||
tt_assert(DBL_TO_U64(d) == 0);
|
||||
d = tor_parse_double("-10", -100.0, 100.0,&i,NULL);
|
||||
tt_int_op(1,OP_EQ, i);
|
||||
tt_int_op(-10.0,OP_EQ, d);
|
||||
tt_double_op(fabs(d - -10.0),OP_LT, 1E-12);
|
||||
}
|
||||
|
||||
{
|
||||
@ -4392,7 +4395,7 @@ test_util_clamp_double_to_int64(void *arg)
|
||||
{
|
||||
(void)arg;
|
||||
|
||||
tt_i64_op(INT64_MIN, ==, clamp_double_to_int64(-INFINITY));
|
||||
tt_i64_op(INT64_MIN, ==, clamp_double_to_int64(-INFINITY_DBL));
|
||||
tt_i64_op(INT64_MIN, ==,
|
||||
clamp_double_to_int64(-1.0 * pow(2.0, 64.0) - 1.0));
|
||||
tt_i64_op(INT64_MIN, ==,
|
||||
@ -4405,7 +4408,7 @@ test_util_clamp_double_to_int64(void *arg)
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(-0.9));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(-0.1));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(0.0));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(NAN));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(NAN_DBL));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(0.1));
|
||||
tt_i64_op(0, ==, clamp_double_to_int64(0.9));
|
||||
tt_i64_op(1, ==, clamp_double_to_int64(1.0));
|
||||
@ -4417,7 +4420,7 @@ test_util_clamp_double_to_int64(void *arg)
|
||||
clamp_double_to_int64(pow(2.0, 63.0)));
|
||||
tt_i64_op(INT64_MAX, ==,
|
||||
clamp_double_to_int64(pow(2.0, 64.0)));
|
||||
tt_i64_op(INT64_MAX, ==, clamp_double_to_int64(INFINITY));
|
||||
tt_i64_op(INT64_MAX, ==, clamp_double_to_int64(INFINITY_DBL));
|
||||
|
||||
done:
|
||||
;
|
||||
|
@ -3,6 +3,8 @@
|
||||
* Copyright (c) 2007-2016, The Tor Project, Inc. */
|
||||
/* See LICENSE for licensing information */
|
||||
|
||||
extern const char tor_git_revision[];
|
||||
|
||||
/* Ordinarily defined in tor_main.c; this bit is just here to provide one
|
||||
* since we're not linking to tor_main.c */
|
||||
const char tor_git_revision[] = "";
|
||||
@ -215,8 +217,6 @@ const struct testcase_setup_t passthrough_setup = {
|
||||
passthrough_test_setup, passthrough_test_cleanup
|
||||
};
|
||||
|
||||
extern struct testgroup_t testgroups[];
|
||||
|
||||
/** Main entry point for unit test code: parse the command line, and run
|
||||
* some unit tests. */
|
||||
int
|
||||
|
@ -1,4 +1,4 @@
|
||||
const char* VOTE_BODY_V3 =
|
||||
static const char* VOTE_BODY_V3 =
|
||||
"network-status-version 3\n"
|
||||
"vote-status vote\n"
|
||||
"consensus-methods 13 14 15 16 17 18 19 20 21\n"
|
||||
|
@ -39,21 +39,21 @@
|
||||
#define DEFAULT_LIFETIME 12
|
||||
|
||||
/* These globals are set via command line options. */
|
||||
char *identity_key_file = NULL;
|
||||
char *signing_key_file = NULL;
|
||||
char *certificate_file = NULL;
|
||||
int reuse_signing_key = 0;
|
||||
int verbose = 0;
|
||||
int make_new_id = 0;
|
||||
int months_lifetime = DEFAULT_LIFETIME;
|
||||
int passphrase_fd = -1;
|
||||
char *address = NULL;
|
||||
static char *identity_key_file = NULL;
|
||||
static char *signing_key_file = NULL;
|
||||
static char *certificate_file = NULL;
|
||||
static int reuse_signing_key = 0;
|
||||
static int verbose = 0;
|
||||
static int make_new_id = 0;
|
||||
static int months_lifetime = DEFAULT_LIFETIME;
|
||||
static int passphrase_fd = -1;
|
||||
static char *address = NULL;
|
||||
|
||||
char *passphrase = NULL;
|
||||
size_t passphrase_len = 0;
|
||||
static char *passphrase = NULL;
|
||||
static size_t passphrase_len = 0;
|
||||
|
||||
EVP_PKEY *identity_key = NULL;
|
||||
EVP_PKEY *signing_key = NULL;
|
||||
static EVP_PKEY *identity_key = NULL;
|
||||
static EVP_PKEY *signing_key = NULL;
|
||||
|
||||
/** Write a usage message for tor-gencert to stderr. */
|
||||
static void
|
||||
|
Loading…
Reference in New Issue
Block a user