@@ -269,17 +269,14 @@ impl Address {
269269 let _ = stream. read_exact ( & mut buf) . await ?;
270270
271271 let v4addr = Ipv4Addr :: new ( buf[ 0 ] , buf[ 1 ] , buf[ 2 ] , buf[ 3 ] ) ;
272- let port = unsafe {
273- let raw_port = & buf[ 4 ..] ;
274- u16:: from_be ( * ( raw_port. as_ptr ( ) as * const _ ) )
275- } ;
272+ let port = u16:: from_be_bytes ( [ buf[ 4 ] , buf[ 5 ] ] ) ;
276273 Ok ( Address :: SocketAddress ( SocketAddr :: V4 ( SocketAddrV4 :: new ( v4addr, port) ) ) )
277274 }
278275 consts:: SOCKS5_ADDR_TYPE_IPV6 => {
279- let mut buf = [ 0u8 ; 18 ] ;
280- let _ = stream. read_exact ( & mut buf) . await ?;
276+ let mut buf = [ 0u16 ; 9 ] ;
281277
282- let buf: & [ u16 ] = unsafe { slice:: from_raw_parts ( buf. as_ptr ( ) as * const _ , 9 ) } ;
278+ let bytes_buf = unsafe { slice:: from_raw_parts_mut ( buf. as_mut_ptr ( ) as * mut _ , 18 ) } ;
279+ let _ = stream. read_exact ( bytes_buf) . await ?;
283280
284281 let v6addr = Ipv6Addr :: new (
285282 u16:: from_be ( buf[ 0 ] ) ,
@@ -309,7 +306,7 @@ impl Address {
309306 let _ = stream. read_exact ( & mut raw_addr) . await ?;
310307
311308 let raw_port = & raw_addr[ length..] ;
312- let port = unsafe { u16:: from_be ( * ( raw_port. as_ptr ( ) as * const _ ) ) } ;
309+ let port = u16:: from_be_bytes ( [ raw_port[ 0 ] , raw_port [ 1 ] ] ) ;
313310
314311 raw_addr. truncate ( length) ;
315312
0 commit comments