summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2023-07-17Merge #2041masterbors[bot]
2041: Set the length of a socket address when calling `recvmsg` on Linux r=asomers a=JarredAllen # Background I think I've found a bug with `recvmsg` on Linux where it doesn't set the length of a received socket address. I found this while working with unix datagram sockets with path `struct sockaddr_un` addresses, but I think this applies to any variable-length socket address type. At present, the `sun_len` field of `UnixAddr` on Linux shows up as 0 whenever I call `recvmsg`. I think it's reading uninitialized memory (afaict the `recvmsg` function never initializes it before we call `MaybeUninit::assume_init`), though it's possible that it's being zero-initialized somewhere that I missed. Either way, this isn't the correct behavior, which should set it to the length of the `struct sockaddr_un` contents (or whatever other type of socket). # Changes I changed the `recvmsg` function to construct the returned socket address from the `struct sockaddr` and length returned by the libc `recvmsg` call (using the `from_raw` function the trait provides). Since the trait is sealed so downstream crates can't implement it, I believe this shouldn't be a breaking change. # Validation I've tested that my code (which failed due to this bug) now works. I also added a new test case which tests that we construct `UnixAddr`s correctly in the `recvmsg` function, which passes locally for me and fails if I cherry-pick it onto the current `master`. I've also checked that `cargo test` and `cargo clippy` both still pass on `aarch64-apple-darwin` and on `aarch64-unknown-linux-musl` targets (the two targets I develop for/have access to). Hopefully your CI will confirm that everything else still works. Co-authored-by: Jarred Allen <jarred@moveparallel.com> Co-authored-by: Jarred Allen <jarredallen73@gmail.com>
2023-07-17Fix lintJarred Allen
2023-07-17Correctly let the kernel set the length on BSDsJarred Allen
Co-authored-by: Alan Somers <asomers@gmail.com>
2023-07-17Merge #2077bors[bot]
2077: Enable socket timestamping options on Android r=asomers a=spencercw Requires https://github.com/rust-lang/libc/pull/3267 which landed in libc 0.2.147. Co-authored-by: Chris Spencer <spencercw@gmail.com>
2023-07-17Merge branch 'master' into set-sockaddr-length-linuxJarred Allen
2023-07-17More PR feedbackJarred Allen
2023-07-17Enable socket timestamping options on AndroidChris Spencer
2023-07-15Merge #2048bors[bot]
2048: Enable additional socket timestamping flags r=asomers a=spencercw Co-authored-by: Chris Spencer <spencercw@gmail.com>
2023-07-15Merge #2076bors[bot]
2076: Clippy cleanup r=asomers a=asomers Co-authored-by: Alan Somers <asomers@gmail.com>
2023-07-15Clippy cleanupAlan Somers
2023-07-02Merge #2067bors[bot]
2067: Address seeming typo in lib.rs r=asomers a=solidsnack I believe the `my` here was intended to be `many` -- but am not sure. Co-authored-by: Jason Dusek <jason.dusek@gmail.com>
2023-07-02Address seeming typo in lib.rsJason Dusek
I believe the `my` here was intended to be `many` -- but am not sure.
2023-06-29Merge #2027 #2057bors[bot]
2027: Update to bitflags 2.2.1. r=asomers a=qwandor This is a new major version and requires some code changes. 2057: Haiku: `speed_t` is defined as `u8` for 32 and 64 bit systems r=asomers a=nielx This fixes the build on 32 bit Haiku systems. Co-authored-by: Andrew Walbran <qwandor@google.com> Co-authored-by: Niels Sascha Reedijk <niels.reedijk@gmail.com>
2023-06-29Merge #2051bors[bot]
2051: Update CHANGELOG for patch release 0.26.2 r=asomers a=asomers [skip ci] Co-authored-by: Alan Somers <asomers@gmail.com>
2023-06-29Merge #2061bors[bot]
2061: For invalid IP address conversions with future Rust versions r=asomers a=asomers Rust's standard library no longer guarantees that Ipv4Addr and Ipv6Addr are wrappers around the C types (though for now at least, they are identical on all platforms I'm aware of). So do the conversions explicitly instead of transmuting. Fixes #2053 Co-authored-by: Alan Somers <asomers@gmail.com>
2023-06-27For invalid IP address conversions with future Rust versionsAlan Somers
Rust's standard library no longer guarantees that Ipv4Addr and Ipv6Addr are wrappers around the C types (though for now at least, they are identical on all platforms I'm aware of). So do the conversions explicitly instead of transmuting. Fixes #2053
2023-06-28Merge #2062bors[bot]
2062: Disable the doc test for sys::personality::personality on aarch64 r=asomers a=asomers It's failing in CI, and we don't yet know why. Possibly the cloud provider just turned on seccomp. Issue #2060 Co-authored-by: Alan Somers <asomers@gmail.com>
2023-06-27Disable the doc test for sys::personality::personality on aarch64Alan Somers
It's failing in CI, and we don't yet know why. Possibly the cloud provider just turned on seccomp. Issue #2060
2023-06-17Haiku: `speed_t` is defined as `u8` for 32 and 64 bit systemsNiels Sascha Reedijk
2023-06-06Merge #2052bors[bot]
2052: Fix CI with the latest rustup r=asomers a=asomers Co-authored-by: Alan Somers <asomers@gmail.com> Co-authored-by: Ben Kimock <kimockb@gmail.com>
2023-06-05Clippy cleanup:Ben Kimock
fix the new clippy::non-minimal-cfg lint
2023-06-05Fix CI with the latest RustupAlan Somers
The latest Rustup does not allow the toolchain specification to be blank, which we were using. Fix it by ensuring that only one toolchain is ever installed in a given task, so we won't need to use the +$TOOLCHAIN with cargo.
2023-06-05Update CHANGELOG for patch release 0.26.2Alan Somers
[skip ci]
2023-06-02Enable additional socket timestamping flagsChris Spencer
2023-06-02Fix typo in commentChris Spencer
2023-05-22Merge branch 'master' into set-sockaddr-length-linuxJarred Allen
2023-05-22Remove redundant `unsafe` blockJarred Allen
2023-05-22Fixup accidentally-introduced changesJarred Allen
2023-05-22PR suggestions: use `skip` macroJarred Allen
2023-05-22PR suggestion: Set the length later instead of using `from_raw`Jarred Allen
2023-05-22Fix warnings.Andrew Walbran
2023-05-22Use repr(transparent) for bitflags.Andrew Walbran
2023-05-22Update to bitflags 2.3.1.Andrew Walbran
This is a new major version and requires some code changes.
2023-05-22Use .bits() method rather than field for bitflags.Andrew Walbran
2023-05-21Merge #2009bors[bot]
2009: Add more detail for ptrace documentation r=asomers a=thomasqueirozb All functions are documented with the equivalent C call example except for `read`, `read_user`, `write` & `write_user`. I was looking for the function that used `PTRACE_PEEKDATA` and couldn't find it using the documentation and had to go to the source code to find it out. In hindsight, it's pretty obvious that it was read... But still I think it would be nice to have it documented Co-authored-by: Thomas de Queiroz Barros <38295417+thomasqueirozb@users.noreply.github.com>
2023-05-21Merge #2040bors[bot]
2040: timerfd: Add TFD_TIMER_CANCEL_ON_SET flag r=asomers a=apohrebniak Hi. This PR adds an TFD_TIMER_CANCEL_ON_SET flag to use with `timerfd` on Linux and Android Co-authored-by: Andrii Pohrebniak <andrii.pohrebniak@gmail.com>
2023-05-21Merge #2042bors[bot]
2042: Update memoffset to 0.9 r=asomers a=est31 Updates memoffset to version 0.9 Co-authored-by: est31 <MTest31@outlook.com>
2023-05-21Merge #2043bors[bot]
2043: Clippy cleanup: r=asomers a=asomers fix the new clippy::non_minimal_cfg lint Co-authored-by: Alan Somers <asomers@gmail.com>
2023-05-21Clippy cleanup:Alan Somers
fix the new clippy::non_minimal_cfg lint
2023-05-21Update memoffset to 0.9est31
2023-05-20timerfd: Add TFD_TIMER_CANCEL_ON_SET flagAndrii Pohrebniak
2023-05-20Merge #2029bors[bot]
2029: Remove 'static mut' usage in features::os::kernel_version. r=asomers a=zachs18 Resolves #2028 Note that this is (AFAICT) the first use of `Atomic*` types in `nix` (other than tests). However, this shouldn't be a portability issue, since `nix` is not `#![no_std]`, and (IIUC) [`std` requires](https://doc.rust-lang.org/std/sync/atomic/#portability) at least loads and stores of pointer-sized atomics (i.e. `AtomicUsize`), which is all this PR uses. Co-authored-by: Zachary S <zasample18+github@gmail.com>
2023-05-19Add test coverage for bug with unset socket address lengthJarred Allen
2023-05-19Set the length of a sockaddr received on LinuxJarred Allen
2023-05-09Merge #2033bors[bot]
2033: remove unused mut from two variable declarations in sys/socket/mod.rs r=asomers a=inglorion This addresses diagnostics like: error: variable does not need to be mutable --> src/sys/socket/mod.rs:1537:13 | 1537 | let mut p = &mut mmsghdr.msg_hdr; Co-authored-by: Bob Haarman <inglorion@google.com>
2023-05-09remove unused mut from two variable declarations in sys/socket/mod.rsBob Haarman
This addresses diagnostics like: error: variable does not need to be mutable --> src/sys/socket/mod.rs:1537:13 | 1537 | let mut p = &mut mmsghdr.msg_hdr;
2023-04-29Remove 'static mut' usage in features::os::kernel_version.Zachary S
(re-commit for CI retry after rustix 0.37.18 release)
2023-04-26Merge #2026bors[bot]
2026: Update to published release of libc r=asomers a=atouchet Co-authored-by: Alex Touchet <alextouchet@outlook.com>
2023-04-25Update to crates.io release of libcAlex Touchet
2023-04-16Merge #2021bors[bot]
2021: Fixing link in rustdoc comments in User::from_name r=asomers a=austinkeeley Link text is correct but the URL goes to the wrong function. Probably just a copy/paste issue from the other function. Co-authored-by: Austin Keeley <austin.keeley@gmail.com>