mirror of
https://github.com/tokio-rs/tokio.git
synced 2025-10-01 12:20:39 +00:00
net: fix handling of leading zero byte in from_abstract_name
(#6838)
This commit is contained in:
parent
d6213594ca
commit
0cea36fa3d
@ -81,7 +81,7 @@ impl UnixListener {
|
||||
let addr = {
|
||||
let os_str_bytes = path.as_ref().as_os_str().as_bytes();
|
||||
if os_str_bytes.starts_with(b"\0") {
|
||||
StdSocketAddr::from_abstract_name(os_str_bytes)?
|
||||
StdSocketAddr::from_abstract_name(&os_str_bytes[1..])?
|
||||
} else {
|
||||
StdSocketAddr::from_pathname(path)?
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ impl UnixStream {
|
||||
let addr = {
|
||||
let os_str_bytes = path.as_ref().as_os_str().as_bytes();
|
||||
if os_str_bytes.starts_with(b"\0") {
|
||||
StdSocketAddr::from_abstract_name(os_str_bytes)?
|
||||
StdSocketAddr::from_abstract_name(&os_str_bytes[1..])?
|
||||
} else {
|
||||
StdSocketAddr::from_pathname(path)?
|
||||
}
|
||||
|
@ -3,6 +3,10 @@
|
||||
#![cfg(unix)]
|
||||
|
||||
use std::io;
|
||||
#[cfg(target_os = "android")]
|
||||
use std::os::android::net::SocketAddrExt;
|
||||
#[cfg(target_os = "linux")]
|
||||
use std::os::linux::net::SocketAddrExt;
|
||||
use std::task::Poll;
|
||||
|
||||
use tokio::io::{AsyncReadExt, AsyncWriteExt, Interest};
|
||||
@ -431,5 +435,11 @@ async fn abstract_socket_name() {
|
||||
let accept = listener.accept();
|
||||
let connect = UnixStream::connect(&socket_path);
|
||||
|
||||
try_join(accept, connect).await.unwrap();
|
||||
let ((stream, _), _) = try_join(accept, connect).await.unwrap();
|
||||
|
||||
let local_addr = stream.into_std().unwrap().local_addr().unwrap();
|
||||
let abstract_path_name = local_addr.as_abstract_name().unwrap();
|
||||
|
||||
// `as_abstract_name` removes leading zero bytes
|
||||
assert_eq!(abstract_path_name, b"aaa");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user