File tree 1 file changed +15
-2
lines changed
1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -109,8 +109,10 @@ where
109
109
{
110
110
/// The caller must ensure `S` is actually a socket.
111
111
fn from ( socket : & ' s S ) -> Self {
112
+ let fd = socket. as_raw_fd ( ) ;
113
+ assert ! ( fd >= 0 ) ;
112
114
SockRef {
113
- socket : ManuallyDrop :: new ( unsafe { Socket :: from_raw_fd ( socket . as_raw_fd ( ) ) } ) ,
115
+ socket : ManuallyDrop :: new ( unsafe { Socket :: from_raw_fd ( fd ) } ) ,
114
116
_lifetime : PhantomData ,
115
117
}
116
118
}
@@ -125,8 +127,10 @@ where
125
127
{
126
128
/// See the `From<&impl AsRawFd>` implementation.
127
129
fn from ( socket : & ' s S ) -> Self {
130
+ let socket = socket. as_raw_socket ( ) ;
131
+ assert ! ( socket != winapi:: um:: winsock2:: INVALID_SOCKET ) ;
128
132
SockRef {
129
- socket : ManuallyDrop :: new ( unsafe { Socket :: from_raw_socket ( socket. as_raw_socket ( ) ) } ) ,
133
+ socket : ManuallyDrop :: new ( unsafe { Socket :: from_raw_socket ( socket) } ) ,
130
134
_lifetime : PhantomData ,
131
135
}
132
136
}
@@ -141,3 +145,12 @@ impl fmt::Debug for SockRef<'_> {
141
145
. finish ( )
142
146
}
143
147
}
148
+
149
+ #[ test]
150
+ #[ should_panic]
151
+ fn sockref_from_invalid_fd ( ) {
152
+ #[ cfg( unix) ]
153
+ let _ = SockRef :: from ( & -1 ) ;
154
+ #[ cfg( windows) ]
155
+ let _ = SockRef :: from ( & winapi:: um:: winsock2:: INVALID_SOCKET ) ;
156
+ }
You can’t perform that action at this time.
0 commit comments