From 4c74b89f35b69d0c4553b5824a2a1a933e0c8025 Mon Sep 17 00:00:00 2001 From: Steven Engler Date: Mon, 21 Nov 2022 14:29:20 -0500 Subject: [PATCH 1/2] Rearrange `sockaddr_storage` padding/alignment fields Previously on Linux, the `sockaddr_storage` structure had padding bytes between the `ss_family` and `__ss_align` fields. The `__ss_align` field has now been moved to the end of the structure to eliminate these padding bytes, matching recent glibc versions: https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/unix/sysv/linux/bits/socket.h;h=4f1f810ea1d9bf00ff428e4e7c49a52c71620775;hb=c804cd1c00adde061ca51711f63068c103e94eef#l190 --- src/unix/linux_like/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/unix/linux_like/mod.rs b/src/unix/linux_like/mod.rs index 46964cc1736ab..8e738d87b889f 100644 --- a/src/unix/linux_like/mod.rs +++ b/src/unix/linux_like/mod.rs @@ -231,11 +231,11 @@ s_no_extra_traits! { pub struct sockaddr_storage { pub ss_family: sa_family_t, - __ss_align: ::size_t, #[cfg(target_pointer_width = "32")] - __ss_pad2: [u8; 128 - 2 * 4], + __ss_pad2: [u8; 128 - 2 - 4], #[cfg(target_pointer_width = "64")] - __ss_pad2: [u8; 128 - 2 * 8], + __ss_pad2: [u8; 128 - 2 - 8], + __ss_align: ::size_t, } pub struct utsname { From 7bbbfb03c45d328f7170b34921f3ede0e9f277c2 Mon Sep 17 00:00:00 2001 From: Steven Engler Date: Mon, 21 Nov 2022 15:32:40 -0500 Subject: [PATCH 2/2] fixup! Rearrange `sockaddr_storage` padding/alignment fields --- src/fuchsia/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fuchsia/mod.rs b/src/fuchsia/mod.rs index cc2bcd516bfc3..7a9edada1f50b 100644 --- a/src/fuchsia/mod.rs +++ b/src/fuchsia/mod.rs @@ -909,8 +909,8 @@ s_no_extra_traits! { pub struct sockaddr_storage { pub ss_family: sa_family_t, + __ss_pad2: [u8; 128 - 2 - 8], __ss_align: ::size_t, - __ss_pad2: [u8; 128 - 2 * 8], } pub struct utsname {