Skip to content

Commit c2877c1

Browse files
committed
fix buffer memory alignment
1 parent 8a0a98a commit c2877c1

File tree

2 files changed

+7
-9
lines changed

2 files changed

+7
-9
lines changed

crates/shadowsocks/src/dns_resolver/trust_dns_resolver.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ use trust_dns_resolver::{
1818
error::ResolveResult,
1919
name_server::{GenericConnector, RuntimeProvider},
2020
proto::{iocompat::AsyncIoTokioAsStd, udp::DnsUdpSocket, TokioTime},
21-
AsyncResolver, TokioHandle,
21+
AsyncResolver,
22+
TokioHandle,
2223
};
2324

2425
use crate::net::{tcp::TcpStream as ShadowTcpStream, udp::UdpSocket as ShadowUdpSocket, ConnectOpts};

crates/shadowsocks/src/relay/socks5.rs

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)