Closed
Description
This library casts std::net::SocketAddrV4
(and V6
) into libc::sockaddr
: https://github.com/rust-lang/socket2-rs/blob/b0f77842b3357dd571bb86b30b354bc55215f693/src/sockaddr.rs#L95-L115
As far as I can tell there are no guarantees from std
about the layout of SocketAddrV{4,6}
, and this code could silently compile and cause UB elsewhere if the representation changes.
This internals forum thread is where this discussion started: https://internals.rust-lang.org/t/why-are-socketaddrv4-socketaddrv6-based-on-low-level-sockaddr-in-6/13321
mio
does the same kind of invalid casting: tokio-rs/mio#1386