diff --git a/crates/arti-bench/src/main.rs b/crates/arti-bench/src/main.rs index 3f91e1317..38af85bfe 100644 --- a/crates/arti-bench/src/main.rs +++ b/crates/arti-bench/src/main.rs @@ -6,6 +6,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] @@ -31,8 +32,9 @@ #![warn(clippy::trait_duplication_in_bounds)] #![deny(clippy::unnecessary_wraps)] #![warn(clippy::unseparated_literal_suffix)] -// FIXME(eta): this uses `unwrap()` a fair deal, but this is probably fine? -// #![deny(clippy::unwrap_used)] +// This file uses `unwrap()` a fair deal, but this is fine in test/bench code +// because it's OK if tests and benchmarks simply crash if things go wrong. +#![allow(clippy::unwrap_used)] use anyhow::{anyhow, Result}; use arti_client::{TorAddr, TorClient}; diff --git a/crates/arti-client/src/lib.rs b/crates/arti-client/src/lib.rs index 98043b298..4a5147e02 100644 --- a/crates/arti-client/src/lib.rs +++ b/crates/arti-client/src/lib.rs @@ -144,6 +144,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/arti-config/src/lib.rs b/crates/arti-config/src/lib.rs index d113152de..dee8964bf 100644 --- a/crates/arti-config/src/lib.rs +++ b/crates/arti-config/src/lib.rs @@ -12,6 +12,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/arti/src/main.rs b/crates/arti/src/main.rs index 45bce5945..5493a3421 100644 --- a/crates/arti/src/main.rs +++ b/crates/arti/src/main.rs @@ -57,6 +57,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] @@ -76,6 +77,8 @@ #![warn(clippy::needless_borrow)] #![warn(clippy::needless_pass_by_value)] #![warn(clippy::option_option)] +#![allow(clippy::print_stderr)] // Allowed in this crate only. +#![allow(clippy::print_stdout)] // Allowed in this crate only. #![warn(clippy::rc_buffer)] #![deny(clippy::ref_option_ref)] #![warn(clippy::semicolon_if_nothing_returned)] @@ -83,9 +86,6 @@ #![deny(clippy::unnecessary_wraps)] #![warn(clippy::unseparated_literal_suffix)] #![deny(clippy::unwrap_used)] -// These are allowed in this crate only. -#![allow(clippy::print_stderr)] -#![allow(clippy::print_stdout)] mod exit; mod process; diff --git a/crates/caret/src/lib.rs b/crates/caret/src/lib.rs index c3499224d..b51525d47 100644 --- a/crates/caret/src/lib.rs +++ b/crates/caret/src/lib.rs @@ -40,6 +40,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/retry-error/src/lib.rs b/crates/retry-error/src/lib.rs index 37b7cbb76..c5d526fea 100644 --- a/crates/retry-error/src/lib.rs +++ b/crates/retry-error/src/lib.rs @@ -37,6 +37,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-bytes/src/lib.rs b/crates/tor-bytes/src/lib.rs index 71000014e..61117bd9d 100644 --- a/crates/tor-bytes/src/lib.rs +++ b/crates/tor-bytes/src/lib.rs @@ -50,6 +50,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-cell/src/lib.rs b/crates/tor-cell/src/lib.rs index ff627fad8..5807b08d5 100644 --- a/crates/tor-cell/src/lib.rs +++ b/crates/tor-cell/src/lib.rs @@ -60,6 +60,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-cert/src/lib.rs b/crates/tor-cert/src/lib.rs index 60b27c088..fc8611acf 100644 --- a/crates/tor-cert/src/lib.rs +++ b/crates/tor-cert/src/lib.rs @@ -53,6 +53,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-chanmgr/src/lib.rs b/crates/tor-chanmgr/src/lib.rs index 29cd31cc5..03fa8e219 100644 --- a/crates/tor-chanmgr/src/lib.rs +++ b/crates/tor-chanmgr/src/lib.rs @@ -18,6 +18,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-checkable/src/lib.rs b/crates/tor-checkable/src/lib.rs index b24adda63..3e3d4840b 100644 --- a/crates/tor-checkable/src/lib.rs +++ b/crates/tor-checkable/src/lib.rs @@ -45,6 +45,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-circmgr/src/build.rs b/crates/tor-circmgr/src/build.rs index c9968ad42..388919869 100644 --- a/crates/tor-circmgr/src/build.rs +++ b/crates/tor-circmgr/src/build.rs @@ -93,8 +93,7 @@ impl Buildable for Arc { params: &CircParameters, ) -> Result { let circ = create_common(chanmgr, rt, ct).await?; - // FIXME(eta): don't clone the params? - Ok(Arc::new(circ.create_firsthop_fast(params.clone()).await?)) + Ok(Arc::new(circ.create_firsthop_fast(params).await?)) } async fn create( chanmgr: &ChanMgr, diff --git a/crates/tor-circmgr/src/lib.rs b/crates/tor-circmgr/src/lib.rs index e79d1ed2b..167aaba21 100644 --- a/crates/tor-circmgr/src/lib.rs +++ b/crates/tor-circmgr/src/lib.rs @@ -23,6 +23,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-config/src/lib.rs b/crates/tor-config/src/lib.rs index b58b86797..fa3809337 100644 --- a/crates/tor-config/src/lib.rs +++ b/crates/tor-config/src/lib.rs @@ -11,6 +11,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-consdiff/src/lib.rs b/crates/tor-consdiff/src/lib.rs index 264425ebe..09a2c3d11 100644 --- a/crates/tor-consdiff/src/lib.rs +++ b/crates/tor-consdiff/src/lib.rs @@ -19,6 +19,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-dirclient/src/lib.rs b/crates/tor-dirclient/src/lib.rs index 8c5687bcd..a7170cd91 100644 --- a/crates/tor-dirclient/src/lib.rs +++ b/crates/tor-dirclient/src/lib.rs @@ -27,6 +27,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-dirmgr/src/lib.rs b/crates/tor-dirmgr/src/lib.rs index 9ca78dcf9..7092ec9c1 100644 --- a/crates/tor-dirmgr/src/lib.rs +++ b/crates/tor-dirmgr/src/lib.rs @@ -27,6 +27,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-events/src/lib.rs b/crates/tor-events/src/lib.rs index 813bf93eb..83463e540 100644 --- a/crates/tor-events/src/lib.rs +++ b/crates/tor-events/src/lib.rs @@ -3,6 +3,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-guardmgr/src/lib.rs b/crates/tor-guardmgr/src/lib.rs index b6d27b659..28b89098b 100644 --- a/crates/tor-guardmgr/src/lib.rs +++ b/crates/tor-guardmgr/src/lib.rs @@ -97,6 +97,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-linkspec/src/lib.rs b/crates/tor-linkspec/src/lib.rs index 2a8e2a761..1f9d3909f 100644 --- a/crates/tor-linkspec/src/lib.rs +++ b/crates/tor-linkspec/src/lib.rs @@ -39,6 +39,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-llcrypto/src/lib.rs b/crates/tor-llcrypto/src/lib.rs index 7fe120e29..451656e14 100644 --- a/crates/tor-llcrypto/src/lib.rs +++ b/crates/tor-llcrypto/src/lib.rs @@ -67,6 +67,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-netdir/src/lib.rs b/crates/tor-netdir/src/lib.rs index 5e9057f67..0c8bea160 100644 --- a/crates/tor-netdir/src/lib.rs +++ b/crates/tor-netdir/src/lib.rs @@ -28,6 +28,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-netdoc/src/lib.rs b/crates/tor-netdoc/src/lib.rs index bdc16684a..495b8592d 100644 --- a/crates/tor-netdoc/src/lib.rs +++ b/crates/tor-netdoc/src/lib.rs @@ -53,6 +53,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-persist/src/lib.rs b/crates/tor-persist/src/lib.rs index 4553b419b..0c8c894a9 100644 --- a/crates/tor-persist/src/lib.rs +++ b/crates/tor-persist/src/lib.rs @@ -11,6 +11,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-proto/src/channel/reactor.rs b/crates/tor-proto/src/channel/reactor.rs index 9736a32ea..13e7f62b6 100644 --- a/crates/tor-proto/src/channel/reactor.rs +++ b/crates/tor-proto/src/channel/reactor.rs @@ -532,7 +532,8 @@ pub(crate) mod test { reactor.run_once().await.unwrap(); }; - let (circ, _) = futures::join!(pending.create_firsthop_fast(circparams), send_response); + let (circ, _) = + futures::join!(pending.create_firsthop_fast(&circparams), send_response); // Make sure statuses are as expected. assert!(matches!(circ.err().unwrap(), Error::BadHandshake)); diff --git a/crates/tor-proto/src/circuit.rs b/crates/tor-proto/src/circuit.rs index 33481d890..c9b1993d1 100644 --- a/crates/tor-proto/src/circuit.rs +++ b/crates/tor-proto/src/circuit.rs @@ -222,7 +222,11 @@ impl ClientCirc { // assuming it's the last hop. let num_hops = self.hops.load(Ordering::SeqCst); - // FIXME(eta): could panic if num_hops is zero + if num_hops == 0 { + return Err(Error::InternalError( + "Number of hops specified is zero, cannot continue".into(), + )); + } let hop_num: HopNum = (num_hops - 1).into(); let (sender, receiver) = mpsc::channel(STREAM_READER_BUFFER); let (tx, rx) = oneshot::channel(); @@ -453,7 +457,7 @@ impl PendingClientCirc { /// There's no authentication in CRATE_FAST, /// so we don't need to know whom we're connecting to: we're just /// connecting to whichever relay the channel is for. - pub async fn create_firsthop_fast(self, params: CircParameters) -> Result { + pub async fn create_firsthop_fast(self, params: &CircParameters) -> Result { let (tx, rx) = oneshot::channel(); self.circ .control @@ -747,7 +751,7 @@ mod test { let params = CircParameters::default(); let ret = if fast { trace!("doing fast create"); - pending.create_firsthop_fast(params).await + pending.create_firsthop_fast(¶ms).await } else { trace!("doing ntor create"); pending.create_firsthop_ntor(&target, params).await diff --git a/crates/tor-proto/src/crypto/handshake/ntor_v3.rs b/crates/tor-proto/src/crypto/handshake/ntor_v3.rs index 9d78456c1..09f4291be 100644 --- a/crates/tor-proto/src/crypto/handshake/ntor_v3.rs +++ b/crates/tor-proto/src/crypto/handshake/ntor_v3.rs @@ -409,7 +409,7 @@ fn server_handshake_ntor_v3_no_keygen( // unwrap_or_else() here, but that should be somewhat // hidden by the rest of the computation. okay &= ct::bool_to_choice(reply.is_some()); - let reply = reply.unwrap_or_else(Vec::new); + let reply = reply.unwrap_or_default(); // If we reach this point, we are actually replying, or pretending // that we're going to reply. diff --git a/crates/tor-proto/src/lib.rs b/crates/tor-proto/src/lib.rs index c17af9a0b..c20f74986 100644 --- a/crates/tor-proto/src/lib.rs +++ b/crates/tor-proto/src/lib.rs @@ -88,6 +88,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-protover/src/lib.rs b/crates/tor-protover/src/lib.rs index fb930473f..7799d658f 100644 --- a/crates/tor-protover/src/lib.rs +++ b/crates/tor-protover/src/lib.rs @@ -37,6 +37,7 @@ #![allow(non_upper_case_globals)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-rtcompat/src/lib.rs b/crates/tor-rtcompat/src/lib.rs index b2213aa15..71ab84414 100644 --- a/crates/tor-rtcompat/src/lib.rs +++ b/crates/tor-rtcompat/src/lib.rs @@ -112,6 +112,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-rtmock/src/lib.rs b/crates/tor-rtmock/src/lib.rs index 590cc3bdc..a52d113be 100644 --- a/crates/tor-rtmock/src/lib.rs +++ b/crates/tor-rtmock/src/lib.rs @@ -110,6 +110,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-socksproto/src/lib.rs b/crates/tor-socksproto/src/lib.rs index 72138c22e..2d684f4a4 100644 --- a/crates/tor-socksproto/src/lib.rs +++ b/crates/tor-socksproto/src/lib.rs @@ -59,6 +59,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/crates/tor-units/src/lib.rs b/crates/tor-units/src/lib.rs index 370954b1a..94fb42ea6 100644 --- a/crates/tor-units/src/lib.rs +++ b/crates/tor-units/src/lib.rs @@ -18,6 +18,7 @@ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] #![deny(clippy::cargo_common_metadata)] #![deny(clippy::cast_lossless)] diff --git a/maint/add_warning.py b/maint/add_warning.py index 895e2fbee..693ebaa54 100755 --- a/maint/add_warning.py +++ b/maint/add_warning.py @@ -11,8 +11,13 @@ WANT_LINTS = """ #![deny(missing_docs)] #![warn(noop_method_call)] #![deny(unreachable_pub)] +#![deny(clippy::all)] #![deny(clippy::await_holding_lock)] +#![deny(clippy::cast_lossless)] +#![deny(clippy::checked_conversions)] +#![warn(clippy::cognitive_complexity)] #![deny(clippy::cargo_common_metadata)] +#![warn(clippy::clone_on_ref_ptr)] #![deny(clippy::debug_assert_with_mut_call)] #![deny(clippy::exhaustive_enums)] #![deny(clippy::exhaustive_structs)] @@ -20,23 +25,17 @@ WANT_LINTS = """ #![deny(clippy::fallible_impl_from)] #![deny(clippy::implicit_clone)] #![deny(clippy::large_stack_arrays)] -#![deny(clippy::missing_docs_in_private_items)] -#![deny(clippy::ref_option_ref)] -#![warn(clippy::clone_on_ref_ptr)] -#![warn(clippy::cognitive_complexity)] #![warn(clippy::manual_ok_or)] -#![warn(clippy::needless_borrow)] -#![warn(clippy::needless_pass_by_value)] -#![warn(clippy::option_option)] -#![warn(clippy::rc_buffer)] -#![warn(clippy::trait_duplication_in_bounds)] -#![warn(clippy::unseparated_literal_suffix)] -#![deny(clippy::unnecessary_wraps)] -#![deny(clippy::cast_lossless)] +#![deny(clippy::missing_docs_in_private_items)] #![deny(clippy::missing_panics_doc)] -#![deny(clippy::unwrap_used)] -#![deny(clippy::checked_conversions)] +#![warn(clippy::needless_borrow)] +#![warn(clippy::rc_buffer)] +#![deny(clippy::ref_option_ref)] #![warn(clippy::semicolon_if_nothing_returned)] +#![warn(clippy::trait_duplication_in_bounds)] +#![deny(clippy::unnecessary_wraps)] +#![warn(clippy::unseparated_literal_suffix)] +#![deny(clippy::unwrap_used)] """ WANT_LINTS = [ "%s\n" % w for w in WANT_LINTS.split() ]