From ef5e54547f3e551799f6541898bc733757591646 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 7 Nov 2025 18:46:54 -0700 Subject: [PATCH] Close accepted socket on getpeername error --- src/platform/redox/socket.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/platform/redox/socket.rs b/src/platform/redox/socket.rs index c50bedfa05..f7ee9eef40 100644 --- a/src/platform/redox/socket.rs +++ b/src/platform/redox/socket.rs @@ -514,11 +514,14 @@ impl PalSocket for Sys { address: *mut sockaddr, address_len: *mut socklen_t, ) -> Result { - let stream = syscall::dup(socket as usize, b"listen")? as c_int; + let stream = dbg!(syscall::dup(socket as usize, b"listen"))?; if address != ptr::null_mut() && address_len != ptr::null_mut() { - let _ = Self::getpeername(stream, address, address_len)?; + if let Err(err) = Self::getpeername(stream as c_int, address, address_len) { + let _ = syscall::close(stream); + return Err(err); + } } - Ok(stream) + Ok(stream as c_int) } unsafe fn bind(socket: c_int, address: *const sockaddr, address_len: socklen_t) -> Result<()> {