From 057b1990d3938c0b38ba81675ae1da66ce484e6f Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Fri, 23 Jan 2026 03:53:44 +0800 Subject: Fix empty address handling in socket address parser --- src/utils/socket_addr_helper.rs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/utils/socket_addr_helper.rs b/src/utils/socket_addr_helper.rs index fd7b346..29ccd9f 100644 --- a/src/utils/socket_addr_helper.rs +++ b/src/utils/socket_addr_helper.rs @@ -8,6 +8,14 @@ pub async fn get_socket_addr( ) -> Result { let address = address_str.as_ref().trim(); + // Return error if input is empty after trimming + if address.is_empty() { + return Err(std::io::Error::new( + std::io::ErrorKind::InvalidInput, + "Empty address string", + )); + } + // Check if the address contains a port if let Some((host, port_str)) = parse_host_and_port(address) { let port = port_str.parse::().map_err(|e| { @@ -28,11 +36,13 @@ pub async fn get_socket_addr( fn parse_host_and_port(address: &str) -> Option<(&str, &str)> { if address.starts_with('[') && let Some(close_bracket) = address.find(']') - && close_bracket + 1 < address.len() && address.as_bytes()[close_bracket + 1] == b':' { - let host = &address[1..close_bracket]; - let port = &address[close_bracket + 2..]; - return Some((host, port)); - } + && close_bracket + 1 < address.len() + && address.as_bytes()[close_bracket + 1] == b':' + { + let host = &address[1..close_bracket]; + let port = &address[close_bracket + 2..]; + return Some((host, port)); + } // Handle IPv4 addresses and hostnames with ports if let Some(colon_pos) = address.rfind(':') { -- cgit