Skip to content

Commit 4891ec6

Browse files
committed
Add a static size check
1 parent 1ee78bc commit 4891ec6

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

src/sockaddr.rs

+11-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ use std::ptr;
44
use std::fmt;
55

66
#[cfg(unix)]
7-
use libc::{sockaddr, sockaddr_storage, sa_family_t, socklen_t, AF_INET, AF_INET6};
7+
use libc::{sockaddr, sockaddr_storage, sockaddr_in, sockaddr_in6, sa_family_t, socklen_t, AF_INET,
8+
AF_INET6};
89
#[cfg(windows)]
910
use winapi::{SOCKADDR as sockaddr, SOCKADDR_STORAGE as sockaddr_storage,
11+
SOCKADDR_IN as sockaddr_in, SOCKADDR_IN6 as sockaddr_in6,
1012
ADDRESS_FAMILY as sa_family_t, socklen_t, AF_INET, AF_INET6};
1113

1214
use SockAddr;
@@ -76,6 +78,14 @@ impl SockAddr {
7678

7779
// SocketAddrV4 and SocketAddrV6 are just wrappers around sockaddr_in and sockaddr_in6
7880

81+
// check to make sure that the sizes at least match up
82+
fn _size_checks(v4: SocketAddrV4, v6: SocketAddrV6) {
83+
unsafe {
84+
mem::transmute::<SocketAddrV4, sockaddr_in>(v4);
85+
mem::transmute::<SocketAddrV6, sockaddr_in6>(v6);
86+
}
87+
}
88+
7989
impl From<SocketAddrV4> for SockAddr {
8090
fn from(addr: SocketAddrV4) -> SockAddr {
8191
unsafe {
@@ -85,7 +95,6 @@ impl From<SocketAddrV4> for SockAddr {
8595
}
8696
}
8797

88-
8998
impl From<SocketAddrV6> for SockAddr {
9099
fn from(addr: SocketAddrV6) -> SockAddr {
91100
unsafe {

0 commit comments

Comments
 (0)