diff options
Diffstat (limited to 'src/sys/unix/uds/socketaddr.rs')
-rw-r--r-- | src/sys/unix/uds/socketaddr.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/sys/unix/uds/socketaddr.rs b/src/sys/unix/uds/socketaddr.rs index 31f8a51..a9f9ea9 100644 --- a/src/sys/unix/uds/socketaddr.rs +++ b/src/sys/unix/uds/socketaddr.rs @@ -28,6 +28,10 @@ enum AddressKind<'a> { impl SocketAddr { fn address(&self) -> AddressKind<'_> { let offset = path_offset(&self.sockaddr); + // Don't underflow in `len` below. + if (self.socklen as usize) < offset { + return AddressKind::Unnamed; + } let len = self.socklen as usize - offset; let path = unsafe { &*(&self.sockaddr.sun_path as *const [libc::c_char] as *const [u8]) }; |