]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add -Wmissing-variable-declarations, with attendant fixes
authorNick Mathewson <nickm@torproject.org>
Thu, 2 Jun 2016 13:46:12 +0000 (09:46 -0400)
committerNick Mathewson <nickm@torproject.org>
Sat, 11 Jun 2016 14:11:54 +0000 (10:11 -0400)
This is a big-ish patch, but it's very straightforward.  Under this
clang warning, we're not actually allowed to have a global variable
without a previous extern declaration for it.  The cases where we
violated this rule fall into three roughly equal groups:
  * Stuff that should have been static.
  * Stuff that was global but where the extern was local to some
    other C file.
  * Stuff that was only global when built for the unit tests, that
    needed a conditional extern in the headers.

The first two were IMO genuine problems; the last is a wart of how
we build tests.

53 files changed:
configure.ac
src/common/compat_libevent.c
src/common/crypto.h
src/common/log.c
src/common/tortls.c
src/common/tortls.h
src/ext/ed25519/donna/ed25519-donna-batchverify.h
src/ext/tinytest.c
src/or/channel.c
src/or/channel.h
src/or/channeltls.c
src/or/channeltls.h
src/or/circuitlist.c
src/or/circuitmux_ewma.h
src/or/config.c
src/or/connection.c
src/or/dirserv.c
src/or/hibernate.c
src/or/main.c
src/or/main.h
src/or/onion.c
src/or/onion_ntor.c
src/or/rendcache.h
src/or/rephist.h
src/or/router.c
src/or/scheduler.h
src/or/tor_main.c
src/test/bench.c
src/test/example_extrainfo.inc
src/test/test-memwipe.c
src/test/test.c
src/test/test.h
src/test/test_buffers.c
src/test/test_channel.c
src/test/test_crypto.c
src/test/test_data.c
src/test/test_dir_common.c
src/test/test_dir_handle_get.c
src/test/test_introduce.c
src/test/test_link_handshake.c
src/test/test_options.c
src/test/test_policy.c
src/test/test_rendcache.c
src/test/test_routerlist.c
src/test/test_routerset.c
src/test/test_scheduler.c
src/test/test_slow.c
src/test/test_socks.c
src/test/test_status.c
src/test/test_tortls.c
src/test/testing_common.c
src/test/vote_descriptors.inc
src/tools/tor-gencert.c

index 4865ca4dcfafed7b51ab6a29c6d87ed234ae3398..85ba939a87bdcf931d021fb4859d6e7088c3f7eb 100644 (file)
@@ -1803,6 +1803,7 @@ if test "x$enable_gcc_warnings_advisory" != "xno"; then
      -Wmissing-noreturn
      -Wmissing-selector-name
      -Wmissing-sysroot
+     -Wmissing-variable-declarations
      -Wmodule-conflict
      -Wnested-anon-types
      -Wnewline-eof
index cc58883750cff92c708ddf4c27d37c3d39bcc1e7..96fcec54d4b8ac118f3814b50cdd4798f943eba9 100644 (file)
@@ -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
index ff38cca0da7c0a0e830b71d7bd26ac937a34a5dc..f8fb0daa81a10587d8ae552b89ae6e51f0c9e66c 100644 (file)
@@ -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
index 6c387c62445c00b8d068814f830117e953c80b47..e948ccfa04c0499fce3e1d30661a6a610df6e0a7 100644 (file)
@@ -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"
index 252da6295eba1f2411761ae7d7478187bc8a71d3..1cb6ca8777be06024fccd668dee4ac42be6d0548 100644 (file)
@@ -562,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
index 1a59c67df3d5c64394eda8a2571d874116337a46..b6ab2ec8f5cf92ad3f196f7b98a1092a1b93e887 100644 (file)
@@ -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);
 
index 43c4923b3eadcb5750ed77325128b8dd52d99fd8..7c64cce78773a46a8e204d4621f914aca2b1b8a4 100644 (file)
@@ -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) {
index f6baeeb9a56009c515d06754940f9cd54533d0d5..3fb1b39c718cbad3ed1018d2bd4a135bbbe57a31 100644 (file)
@@ -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. */
index 78a2fb9ab1dd1d6fe0fb87b1e9af5681bb6bb0f9..87fa721089668fe92f19fe9456b80d55cb0f8c2f 100644 (file)
@@ -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 {
index a8c337e10733d334223cfb6fdd082824876180a0..78e1b7101427653d5e245889a23c02720d6da77c 100644 (file)
@@ -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 */
index 5833b2ae63b576a75b0ec071ed865f492e96d3b2..2bb88dd5057c3ed3494b460af84883f065710501 100644 (file)
@@ -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 */
 
index a4d9c7a095403b696c912a8129f55d267be63bae..8b5863a461da4ab7018d36ded2bc0a91a96d572c 100644 (file)
@@ -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);
index 1efb7ef4d003451a4c9ccd133e903c7caed83fcc..d2ba7d47817a2bf6e3ab2da2ccb2483b6789daca 100644 (file)
@@ -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>
index 58aac1e1969aaea45ed0aeff7356aff3270de9d2..a7b8961ac6729c4f6fac6f48759f2d4d0fc1f1f9 100644 (file)
 #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);
index ca1e17c4afcfd0b5e898476de0404c1bf13b01f5..a863fdb55ace623c8fa3370019c2581e8c849d94 100644 (file)
@@ -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:";
 
index 86ed2fbccf0ec64aa15e05b0ed2a94455d166dca..f713bbbe659123b60939020008bfb483c8b19a4d 100644 (file)
@@ -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
index d1ea5dffd8b37e7ed07d62089786732656521c70..80c73501cb9fc80d099961280c9b7063c5fce2ab 100644 (file)
@@ -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"
  * 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
index 3666abbcf44ee7561c2575cffbf0a32459290631..209aae01cffb7d31e24b1466acf151a62fbb8188 100644 (file)
@@ -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;
index 1b161336c6b8d27c4d75736b933dad8c69ac41a7..77d9f3ff91eb3db4eee471d6c2bb0f8c17cd5dff 100644 (file)
@@ -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.
  */
index ad865b8124ea3776fd715a415042cea158b54890..31a22de424b9f4e63e08d9f29c31d174fbbcc26e 100644 (file)
@@ -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);
index 4bed7ae2261c7e279398d90cf609425bd41e66c9..26a4f857e962cf5f25f2dbf858c250bfaf6db279 100644 (file)
@@ -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 */
index 9f97a4cfbe77a683e3d381f1a281478362c52cdc..33afc2789591804191a2236a0aad0be8dfa0b1f2 100644 (file)
@@ -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",
index 0e8b918753d96a59ffd7d47bc3d0f5a1ce81d3ff..270b614c38d35487813df615e2b5451e806dafc1 100644 (file)
@@ -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 */
index 145da97d02e347617023440093625515d10ec518..ff4810a56d85499deb581b0c5b9d1cfeaafafcb1 100644 (file)
@@ -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
 
index 43157a9070f29d7ff4a547b0af445141d1bd54aa..cfc003996bfcb8db57775b032a83209c5bcbcc35 100644 (file)
@@ -40,8 +40,6 @@
  * and uploading server descriptors, retrying OR connections.
  **/
 
-extern long stats_n_seconds_working;
-
 /************************************************************/
 
 /*****
index 94a44a0aa3c7edc55f656fcfdb58b94a83891c43..3dcfd2faca18d3cb0478acadc615cbc2c3a3b6f3 100644 (file)
@@ -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) */
index ac32eef559097b05c0bb72d7ae048eaaae2420b6..21fbe3efb5dc106f59964296a7d57a928ecc63fd 100644 (file)
@@ -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.
index 5aefda5ff20f8d3e5fbb2fa7e86887614fbaf78d..5595988f31e9084c992f7ef70c03b9e7593f4212 100644 (file)
@@ -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[] = "";
index e096afd6c4aa4d200b42a20c151b9c09444b90f3..0bf2341ef5ccb12fec54491e7a5e8f01cb875cdc 100644 (file)
@@ -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"
index 5e89534db6332ddecafdbaf6aab2082f10d78662..c28d5054a2f72dcfb44edd79ea83eec9a189fc51 100644 (file)
@@ -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
index 1595c8ee4f4f47bc3ea415ea9525877b1b02de9b..c0faec302731bed32b06e4d0eae5edc6ed98b20e 100644 (file)
@@ -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 },
index 153b7cae00e11f1eb796d52547a7f3f7fb4df662..747b61d66988e382b35ea0b4cc0d7366388893cc 100644 (file)
@@ -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
 
index e5e56edf7581b268359883c1a287087b90ef3a54..95584d54a867c0c58a70c92d3508cc25b5f6aa06 100644 (file)
@@ -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)
index f37e71816e9df2effabcf658410cc12c085f7164..a9e0634d9eacfd462a17e6487eee12732cc73148 100644 (file)
@@ -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;
index e6b250a677a3934878c58c131c2ad71087e8e0e3..636233194233fc0f031b45e3b673f05c432c75d5 100644 (file)
 #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)
@@ -275,9 +271,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)
 {
index 32de54bc8450f95d8198fcee807e047bd9fbce94..788489a097bb3194d3dde160d962a1bf6fd27f2f 100644 (file)
@@ -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
index 0b446c2dfdb4a83817941518801e80d7d88e23c9..2448d307b2f60a667365c0f1424d65932a608c8a 100644 (file)
@@ -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.
  */
index 44edaf850b3c4616b406362f432ee9ba7307c738..9e47deb74f66a74121e136c9452d88f843fcbc2a 100644 (file)
@@ -1212,8 +1212,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";
index 9c7a86da66acdd66feff9898e4a0091226dda39b..810b03c93db836e5516c1bdb3518e93874428323 100644 (file)
@@ -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,
index e8856c60de2ef887ceb8c72b980194665bb8e77a..40387834598561e8db9ac1f6b9654a13cb30b7f8 100644 (file)
@@ -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)
index 20e8dd563af41230ddfe5b4face22a8ea6e62c02..8d1d6f901e6ddf1c7ec49985c5c1e0aa8c19b1bf 100644 (file)
@@ -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)
 {
index a939ebf54fa74a1d1ed05bc15f8efcf105ead684..913a2f303ab54a29aa16168788b0a3231d20081c 100644 (file)
@@ -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 */
index d1b52649b2c7bd07854b1d8e9ed63811215eace6..eac41ecdda3bf4f1462a644f718218a4a193c91c 100644 (file)
@@ -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)
 {
index 2cffa6e801009eec0a430680505b0419a9ddf6b2..34b70ac8a8b84f6903d2decafceee500daf5b09c 100644 (file)
 #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. */
index 74b39c048649ab8044f179da62f2cad91e1f8f38..1b526d430b9b113202c9303e0996095e1fcc1b58 100644 (file)
@@ -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)
index 6e9889b48baa617610c712ec2e31002c7a9fae23..15fbb2d1863608d1981df8844dc8adbbb297a717 100644 (file)
 #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;
 
index c1d2e819141566a108e1e4f502225f3be40f6f0b..7c9f0b1cc21cf838b6b0b1fe35f4b66bc6123626 100644 (file)
@@ -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 },
index 6da09fd653959c258c124562b4532781a10c147a..62ff12fe1585f3b83505b1af73234508ed448498 100644 (file)
@@ -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
 };
 
index 84a0f6c0241be7c6ecc8117c0e35df2bbd494c22..b4438aabe9e8310528ad673d3a1f502344d15baa 100644 (file)
@@ -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)
index caaada87017c2615456f114ea57bc73c298e8dab..42b9ef7733167fe25d2baee26df2d42b217ee44b 100644 (file)
@@ -51,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
@@ -278,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)
 {
@@ -790,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)
 {
@@ -1184,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)
 {
index 39c3d02ab134be875462a3a54a82f0b1eab46ddd..ea9366305cdef06b773407c9365f056a6fe328aa 100644 (file)
@@ -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
index c5ce21f7446b4916d9014e0fe0fb1a97eb4b104c..895dc6c65c944583493881775b097436e912d796 100644 (file)
@@ -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"
index c05066722aa8e28ae83b52897757ad1accc11ca4..778196602403150c9192a2b7cb18b460b900ebd5 100644 (file)
 #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;
-
-char *passphrase = NULL;
-size_t passphrase_len = 0;
-
-EVP_PKEY *identity_key = NULL;
-EVP_PKEY *signing_key = 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;
+
+static char *passphrase = NULL;
+static size_t passphrase_len = 0;
+
+static EVP_PKEY *identity_key = NULL;
+static EVP_PKEY *signing_key = NULL;
 
 /** Write a usage message for tor-gencert to stderr. */
 static void