From 344dff93611db6343fe7f83fdbbac43bef4a1f05 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 2 Mar 2025 22:50:45 +0800 Subject: [PATCH] fix(deps): update rust crate rand to 0.9 (#1859) * fix(deps): update rust crate rand to 0.9 * fix: rand 0.9 compat --------- Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: zonyitoo --- Cargo.lock | 6 +++--- Cargo.toml | 2 +- crates/shadowsocks-service/Cargo.toml | 2 +- crates/shadowsocks-service/src/local/dns/server.rs | 7 +++---- crates/shadowsocks-service/src/local/dns/upstream.rs | 3 +-- .../shadowsocks-service/src/local/net/udp/association.rs | 9 +++++++-- crates/shadowsocks-service/src/server/udprelay.rs | 9 +++++++-- crates/shadowsocks/Cargo.toml | 2 +- crates/shadowsocks/src/relay/mod.rs | 4 ++-- 9 files changed, 26 insertions(+), 18 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ea7b9209..6f17d708 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3232,7 +3232,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project", - "rand 0.8.5", + "rand 0.9.0", "sendfd", "serde", "serde_json", @@ -3299,7 +3299,7 @@ dependencies = [ "mimalloc", "mime", "qrcode", - "rand 0.8.5", + "rand 0.9.0", "reqwest", "rpassword", "rpmalloc", @@ -3349,7 +3349,7 @@ dependencies = [ "nix", "once_cell", "pin-project", - "rand 0.8.5", + "rand 0.9.0", "regex", "rustls-native-certs", "serde", diff --git a/Cargo.toml b/Cargo.toml index 30c76ba2..6d1b2417 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -229,7 +229,7 @@ directories = "6.0" xdg = "2.5" rpassword = "7.3" libc = { version = "0.2", features = ["extra_traits"] } -rand = "0.8" +rand = "0.9" futures = "0.3" tokio = { version = "1", features = ["rt", "signal"] } diff --git a/crates/shadowsocks-service/Cargo.toml b/crates/shadowsocks-service/Cargo.toml index ab591251..415f91bf 100644 --- a/crates/shadowsocks-service/Cargo.toml +++ b/crates/shadowsocks-service/Cargo.toml @@ -134,7 +134,7 @@ lru_time_cache = "0.11" bytes = "1.7" byte_string = "1.0" byteorder = "1.5" -rand = { version = "0.8", features = ["small_rng"] } +rand = { version = "0.9", features = ["small_rng"] } sled = { version = "0.34.7", optional = true } futures = "0.3" diff --git a/crates/shadowsocks-service/src/local/dns/server.rs b/crates/shadowsocks-service/src/local/dns/server.rs index a0d47cae..721c5535 100644 --- a/crates/shadowsocks-service/src/local/dns/server.rs +++ b/crates/shadowsocks-service/src/local/dns/server.rs @@ -23,7 +23,6 @@ use hickory_resolver::proto::{ rr::{DNSClass, Name, RData, RecordType}, }; use log::{debug, error, info, trace, warn}; -use rand::{thread_rng, Rng}; use tokio::{ io::{AsyncReadExt, AsyncWriteExt}, net::{TcpStream, UdpSocket}, @@ -854,7 +853,7 @@ impl DnsClient { async fn lookup_remote_inner(&self, query: &Query, remote_addr: &Address) -> io::Result { let mut message = Message::new(); - message.set_id(thread_rng().gen()); + message.set_id(rand::random()); message.set_recursion_desired(true); message.add_query(query.clone()); @@ -884,7 +883,7 @@ impl DnsClient { // Then this future will be disabled and have no effect // // Randomly choose from 500ms ~ 1.5s for preventing obvious request pattern - let sleep_time = thread_rng().gen_range(500..=1500); + let sleep_time = rand::random_range(500..=1500); time::sleep(Duration::from_millis(sleep_time)).await; let server = self.balancer.best_tcp_server(); @@ -933,7 +932,7 @@ impl DnsClient { async fn lookup_local_inner(&self, query: &Query, local_addr: &NameServerAddr) -> io::Result { let mut message = Message::new(); - message.set_id(thread_rng().gen()); + message.set_id(rand::random()); message.set_recursion_desired(true); message.add_query(query.clone()); diff --git a/crates/shadowsocks-service/src/local/dns/upstream.rs b/crates/shadowsocks-service/src/local/dns/upstream.rs index 9500e4db..fa7a6c04 100644 --- a/crates/shadowsocks-service/src/local/dns/upstream.rs +++ b/crates/shadowsocks-service/src/local/dns/upstream.rs @@ -15,7 +15,6 @@ use bytes::{BufMut, BytesMut}; use hickory_resolver::proto::{op::Message, ProtoError, ProtoErrorKind}; use log::{error, trace}; use lru_time_cache::{Entry, LruCache}; -use rand::{thread_rng, Rng}; use shadowsocks::{ config::ServerConfig, context::SharedContext, @@ -139,7 +138,7 @@ impl DnsClient { async fn inner_lookup(&mut self, msg: &mut Message) -> Result { // Make a random ID - msg.set_id(thread_rng().gen()); + msg.set_id(rand::random()); trace!("DNS lookup {:?}", msg); diff --git a/crates/shadowsocks-service/src/local/net/udp/association.rs b/crates/shadowsocks-service/src/local/net/udp/association.rs index d0563158..bef3ac9a 100644 --- a/crates/shadowsocks-service/src/local/net/udp/association.rs +++ b/crates/shadowsocks-service/src/local/net/udp/association.rs @@ -234,13 +234,18 @@ where } thread_local! { - static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); + static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); } /// Generate an AEAD-2022 Client SessionID #[inline] pub fn generate_client_session_id() -> u64 { - CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().gen()) + loop { + let id = CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().random()); + if id != 0 { + break id; + } + } } impl UdpAssociationContext diff --git a/crates/shadowsocks-service/src/server/udprelay.rs b/crates/shadowsocks-service/src/server/udprelay.rs index e1aba396..f1379be5 100644 --- a/crates/shadowsocks-service/src/server/udprelay.rs +++ b/crates/shadowsocks-service/src/server/udprelay.rs @@ -462,12 +462,17 @@ impl Drop for UdpAssociationContext { } thread_local! { - static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); + static CLIENT_SESSION_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); } #[inline] fn generate_server_session_id() -> u64 { - CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().gen()) + loop { + let id = CLIENT_SESSION_RNG.with(|rng| rng.borrow_mut().random()); + if id != 0 { + break id; + } + } } impl UdpAssociationContext { diff --git a/crates/shadowsocks/Cargo.toml b/crates/shadowsocks/Cargo.toml index 32ce7a44..60695ee5 100644 --- a/crates/shadowsocks/Cargo.toml +++ b/crates/shadowsocks/Cargo.toml @@ -62,7 +62,7 @@ spin = { version = "0.9", features = ["std"] } pin-project = "1.1" bloomfilter = { version = "3.0.0", optional = true } thiserror = "2.0" -rand = { version = "0.8", optional = true } +rand = { version = "0.9", optional = true } lru_time_cache = { version = "0.11", optional = true } serde = { version = "1.0", features = ["derive"] } diff --git a/crates/shadowsocks/src/relay/mod.rs b/crates/shadowsocks/src/relay/mod.rs index 52b05a84..6f467664 100644 --- a/crates/shadowsocks/src/relay/mod.rs +++ b/crates/shadowsocks/src/relay/mod.rs @@ -18,11 +18,11 @@ fn get_aead_2022_padding_size(payload: &[u8]) -> usize { use rand::{rngs::SmallRng, Rng, SeedableRng}; thread_local! { - static PADDING_RNG: RefCell = RefCell::new(SmallRng::from_entropy()); + static PADDING_RNG: RefCell = RefCell::new(SmallRng::from_os_rng()); } if payload.is_empty() { - PADDING_RNG.with(|rng| rng.borrow_mut().gen::() % AEAD2022_MAX_PADDING_SIZE) + PADDING_RNG.with(|rng| rng.borrow_mut().random_range::(0..=AEAD2022_MAX_PADDING_SIZE)) } else { 0 }