From 0da43e164350f555227c4ff89417f733b8217875 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=A3rebe=20-=20Romain=20GERARD?= <erebe@erebe.eu> Date: Fri, 7 Jun 2024 20:53:08 +0200 Subject: [PATCH] fix(#289): crash due to invalid UDP socks5 packet received --- src/socks5_udp.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/socks5_udp.rs b/src/socks5_udp.rs index 3bdb054..c3d98e3 100644 --- a/src/socks5_udp.rs +++ b/src/socks5_udp.rs @@ -241,7 +241,14 @@ pub async fn run_server( let (destination_addr, data) = { let payload = buf.split().freeze(); - let (frag, destination_addr, data) = fast_socks5::parse_udp_request(payload.chunk()).await.unwrap(); + let (frag, destination_addr, data) = match fast_socks5::parse_udp_request(payload.chunk()).await { + Ok((frag, addr, data)) => (frag, addr, data), + Err(err) => { + warn!("Skipping invalid UDP socks5 request: {} ", err); + debug!("Invalid UDP socks5 request: {:?}", payload.chunk()); + continue; + } + }; // We don't support udp fragmentation if frag != 0 { warn!("dropping UDP socks5 fragmented");