Commit Graph

2769 Commits

Author SHA1 Message Date
SteveLauC
347915bdb5 format code 2022-08-09 12:17:27 +08:00
SteveLauC
d458ecd4e1 remove deprecated items 2022-08-09 12:15:52 +08:00
bors[bot]
a10078f35c
Merge #1780
1780: Implement faccessat r=asomers a=nateavers

This is a re-post of #1134, which seems to have been abandoned. Includes the changes requested in [this comment](https://github.com/nix-rust/nix/pull/1134#issuecomment-541346612).

Co-authored-by: Zhang Miaolei <zmlcc@outlook.com>
2022-08-06 02:11:37 +00:00
Zhang Miaolei
f8c79c63e5 add faccessat 2022-08-05 20:15:51 -04:00
Matthew Ingwersen
6bf07fdbb9 Add support for the IP_SENDSRCADDR control message
This control message (actually just an alias for IP_RECVDSTADDR) sets
the IPv4 source address when used with sendmsg. It is available on
FreeBSD, NetBSD, OpenBSD, and DragonFlyBSD.
2022-08-05 12:35:57 -04:00
bors[bot]
67329c593f
Merge #1779
1779: Upgrade libc to 0.2.127 r=asomers a=rtzoeller

This is the last version of libc which will support Rust 1.46, per https://github.com/rust-lang/libc/pull/2845.

I think we should ship nix 0.25.0 against this version of libc (at some point, not necessarily now), as it will allow us to maintain an MSRV of 1.46, and subsequently upgrade to a later libc immediately after releasing 0.25.0.

Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2022-08-04 12:49:17 +00:00
Ryan Zoeller
cac1486f17 Upgrade libc to 0.2.127
This is the last version of libc which will support Rust 1.46, per
https://github.com/rust-lang/libc/pull/2845
2022-08-03 22:58:22 -05:00
bors[bot]
566c612422
Merge #1778
1778: fix clippy assertions_on_result_states r=rtzoeller a=pacak

https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states


Fixes broken CI for https://github.com/nix-rust/nix/pull/1744

Co-authored-by: Michael Baikov <manpacket@gmail.com>
2022-08-04 03:31:23 +00:00
Michael Baikov
a6ee63ac32 fix clippy assertions_on_result_states
https://rust-lang.github.io/rust-clippy/master/index.html#assertions_on_result_states
2022-08-04 09:44:40 +08:00
bors[bot]
854a5469c0
Merge #1772
1772: Add support for RecvOrigDstAddr on Linux r=asomers a=brianmay

Fixes #1767

Co-authored-by: Brian May <brian@linuxpenguins.xyz>
2022-07-26 23:08:12 +00:00
bors[bot]
f8794ddc98
Merge #1774
1774: Fix typo guarding memfd export on android. r=asomers a=detly

Extremely minor but crucial typo on import guard from #1773. `@flxo` 

Co-authored-by: Jason Heeris <jason.heeris@gmail.com>
2022-07-26 13:07:59 +00:00
Jason Heeris
4e3426f27e Fix typo guarding memfd export on android. 2022-07-26 10:34:56 +08:00
Brian May
c45cd74f42 Add support for RecvOrigDstAddr on Linux
Fixes #1767
2022-07-26 07:39:00 +10:00
bors[bot]
981df92e3a
Merge #1773
1773: Add memfd for target_os = "android" r=asomers a=flxo

Memory fds (`memfd`) are implemented and exported by Androids bionic.
Export the `memfd` module if the target os is `android`.

https://cs.android.com/android/platform/superproject/+/master:bionic/libc/include/sys/mman.h;drc=23c7543b8e608ebcbb38b952761b54bb56065577;bpv=1;bpt=1;l=182

Co-authored-by: Felix Obenhuber <felix@obenhuber.de>
2022-07-25 16:20:10 +00:00
Felix Obenhuber
e357d60cde Add memfd for target_os = "android"
Memory fds (`memfd`) are implemented and exported by Androids bionic.
Export the `memfd` module if the target os is `android`.

https://cs.android.com/android/platform/superproject/+/master:bionic/libc/include/sys/mman.h;drc=23c7543b8e608ebcbb38b952761b54bb56065577;bpv=1;bpt=1;l=182
2022-07-25 09:00:44 +02:00
bors[bot]
00f69814fe
Merge #1768
1768: Add ETH_P_ALL protocol number to SockProtocol r=asomers a=valdaarhun

Hi. I am working on a networking project that uses [packet sockets](https://man7.org/linux/man-pages/man7/packet.7.html) and noticed that ETH_P_ALL is not there in the `SockProtocol` enum. I thought it would be nice to have it here alongside IPPROTO_TCP and IPPROTO_UDP instead of having to separately import it from the libc crate.

Co-authored-by: valdaarhun <icegambit91@gmail.com>
2022-07-24 17:02:29 +00:00
valdaarhun
1040d97036 Add ETH_P_ALL protocol number to SockProtocol
Add note to Changelog.md

Make changes in comments

Co-authored-by: Alan Somers <asomers@gmail.com>

Add Android as target os for ETH_P_ALL
2022-07-24 21:25:01 +05:30
bors[bot]
7cc33c15fe
Merge #1770
1770: Fix SockaddrLike::from_raw with unaligned inputs r=rtzoeller a=asomers

The major users of this function are functions like gethostname, which
will always properly align their buffers.  But out-of-crate consumers
could manually construct an unaligned buffer.  Handle that correctly.

Enable Clippy's cast_ptr_alignment lint.  It's disabled by default as it
reports many false positives, but it would've caught this problem.

Reported-by:	Miri
Fixes:		1769

Co-authored-by: Alan Somers <asomers@gmail.com>
2022-07-23 21:05:48 +00:00
Alan Somers
14418f4ea1
Merge pull request #1771 from asomers/0.24.2-changelog
[skip ci] Add 0.24.2 release notes to CHANGELOG
2022-07-23 14:48:16 -06:00
Alan Somers
ca2c9208ec Pin cargo-hack to 0.5.14 in CI
Newer versions of cargo-hack require a newer toolchain to install
2022-07-23 14:46:42 -06:00
Alan Somers
098aba2c4a Fix SockaddrLike::from_raw with unaligned inputs
The major users of this function are functions like gethostname, which
will always properly align their buffers.  But out-of-crate consumers
could manually construct an unaligned buffer.  Handle that correctly.

Enable Clippy's cast_ptr_alignment lint.  It's disabled by default as it
reports many false positives, but it would've caught this problem.

Reported-by:	Miri
Fixes:		1769
2022-07-23 14:46:42 -06:00
Alan Somers
12475785ff [skip ci] Add 0.24.2 release notes to CHANGELOG 2022-07-23 14:38:41 -06:00
bors[bot]
b1e1a604a7
Merge #1764
1764: Fix description of fchownat r=asomers a=valdaarhun

Based on the man page for `fchownat` and `lchown`, I have got the impression that with `FchownatFlags::NoFollowSymlink`, fchownat and lchown are identical. I couldn't find any documentation on `lchmod`.

Co-authored-by: valdaarhun <icegambit91@gmail.com>
2022-07-15 19:36:06 +00:00
valdaarhun
885b9430ae Fix description of fchownat 2022-07-16 00:18:34 +05:30
bors[bot]
b44daa1362
Merge #1741
1741: SigSet: A new unsafe helper method to create a SigSet from a sigset_t r=rtzoeller a=germag

Currently,  the only way to create a `SigSet` from a `sigset_t` object
is by using pointer casts, like:

```
unsafe {
    let sigset = *(&sigset as *const libc::sigset_t as *const SigSet)
};
```

This is un-ergonomic for library creators with interfaces to C.
So, let's add a new unsafe method that creates a `SigSet` from a 
`libc::sigset_t` object.

We can't implement `From` since converting from `libc::sigset_t` to
`SigSet` is unsafe, because objects of type `libc::sigset_t` must be
initialized by calling either `sigemptyset(3)` or `sigfillset(3)`
before being used. In other case, the results are undefined.
We can't implement `TryFrom` either, because there is no way to check
if an object of type `libc::sigset_t` is initialized.

Signed-off-by: German Maglione <gmaglione@redhat.com>

Co-authored-by: German Maglione <gmaglione@redhat.com>
2022-07-15 02:53:44 +00:00
bors[bot]
2556b78f34
Merge #1763
1763: Fix a buffer overflow in sys::socket::recvfrom r=posborne a=asomers

IPv4 and stream sockets are unaffected, but for datagram sockets of
other address types libc::recvfrom might overwrite part of the stack.

Fixes #1762

Co-authored-by: Alan Somers <asomers@gmail.com>
2022-07-14 19:25:51 +00:00
Alan Somers
e0e768e7b9 Fix a buffer overflow in sys::socket::recvfrom
IPv4 and stream sockets are unaffected, but for datagram sockets of
other address types libc::recvfrom might overwrite part of the stack.

Fixes #1762
2022-07-14 11:37:56 -06:00
bors[bot]
e5f354cf58
Merge #1758
1758: Add chflags r=rtzoeller a=asomers



Co-authored-by: musikid <musikid@outlook.com>
2022-07-14 04:15:39 +00:00
musikid
137a9abb66 Add chflags 2022-07-13 21:27:36 -06:00
bors[bot]
fb65331a55
Merge #1761
1761: Add non-standard Linux `SysconfVar` variants r=asomers a=stevenengler

Closes #1240.

You can find these options near the end of https://man7.org/linux/man-pages/man3/sysconf.3.html.

I can see that the libc crate defines these for Linux and Android, but I'm not sure if they're defined for any others as well.

Co-authored-by: Steven Engler <opara@cs.georgetown.edu>
2022-07-13 21:01:47 +00:00
Steven Engler
b7a2de0539 Added non-standard Linux SysconfVar variants 2022-07-13 16:43:45 -04:00
German Maglione
b207aaee4c SigSet: Add the repr(transparent) attribute
This commit adds the `repr(transparent)` attribute to the `SigSet`
struct, to make sure that its representation is exactly like the
`sigset_t` struct from C, in all cases.

Signed-off-by: German Maglione <gmaglione@redhat.com>
2022-07-12 17:25:51 +02:00
German Maglione
3d44d276e7 SigSet: A new unsafe helper method to create a SigSet from a sigset_t
Currently,  the only way to create a `SigSet` from a `sigset_t` object
is by using pointer casts, like:

```
unsafe {
    let sigset = *(&sigset as *const libc::sigset_t as *const SigSet)
};
```

This is un-ergonomic for library creators with interfaces to C.
So, let's add a new unsafe method that creates a `SigSet` from a
`libc::sigset_t` object.

We can't implement `From` since converting from `libc::sigset_t` to
`SigSet` is unsafe, because objects of type `libc::sigset_t` must be
initialized by calling either `sigemptyset(3)` or `sigfillset(3)`
before being used. In other case, the results are undefined.
We can't implement `TryFrom` either, because there is no way to check
if an object of type `libc::sigset_t` is initialized.

Signed-off-by: German Maglione <gmaglione@redhat.com>
2022-07-12 17:25:51 +02:00
bors[bot]
5f859d10df
Merge #1759 #1760
1759: More docs for dir and mqueue r=rtzoeller a=asomers

Add doc comments for the `dir` and `mqueue` modules.  Also, delete dead code in `mqueue`

1760: Add const constructors for TimeSpec and TimeVal r=rtzoeller a=asomers

These are basically the same as From<libc::timespec> and
From<libc::timeval>, but they're const and require less typing.

Co-authored-by: Alan Somers <asomers@gmail.com>
2022-07-11 02:34:44 +00:00
bors[bot]
b1b43725df
Merge #1757
1757: Clippy cleanup in the tests. r=rtzoeller a=asomers

* Remove a redundant closure.

Co-authored-by: Alan Somers <asomers@gmail.com>
2022-07-11 02:19:59 +00:00
Alan Somers
b3e4d59bd7 Add const constructors for TimeSpec and TimeVal
These are basically the same as From<libc::timespec> and
From<libc::timeval>, but they're const and require less typing.
2022-07-10 18:43:00 -06:00
bors[bot]
d09c2972b7
Merge #1752
1752: Add missing DontRoute SockOpt r=asomers a=leoleoasd

I'm not sure, but according to [unix standard](https://pubs.opengroup.org/onlinepubs/7908799/xns/setsockopt.html), SO_DONTROUTE should appear in all unix systems.
Does this need a test?

Co-authored-by: Leo Lu <luyuxuanleo@gmail.com>
2022-07-10 22:52:28 +00:00
Leo Lu
790960cbb2
Added CHANGELOG 2022-07-11 06:45:35 +08:00
Leo Lu
ba376e8577
Add DontRoute SockOpt 2022-07-11 06:45:34 +08:00
Alan Somers
349f3acf42 More docs for the dir module 2022-07-10 10:28:38 -06:00
Alan Somers
d988c65d86 More docs for mqueue.
Also, delete some dead code.  It's always been dead.
2022-07-10 10:20:48 -06:00
bors[bot]
c8ffe26955
Merge #1745
1745: Change gethostname to use a buffer of MaybeUninit values r=asomers a=nathaniel-daniel

Changing `gethostname` to accept a buffer of `MaybeUninit` bytes allows the user to avoid needlessly initializing a buffer. This is a breaking API change.

Co-authored-by: Nathaniel Daniel <nathaniel.daniel12@gmail.com>
2022-07-10 16:00:11 +00:00
Alan Somers
dc1a34b864 Clippy cleanup in the tests.
* Remove a redundant closure.
* Comparison with null
* Manual implementation of find
* Suppress a false positive
2022-07-10 08:43:04 -06:00
bors[bot]
caebe66185
Merge #1756
1756: Fix clippy on nightly r=asomers a=rtzoeller



Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2022-07-07 20:50:16 +00:00
Ryan Zoeller
8cfc530b88 Fix clippy on nightly 2022-07-07 15:02:36 -05:00
Nathaniel Daniel
22c4ba8bc0 Change gethostname to return an OsString 2022-06-27 19:48:14 -07:00
Nathaniel Daniel
356ecce5cd Change gethostname to use a buffer of MaybeUninit values 2022-06-27 19:48:14 -07:00
bors[bot]
0922fd99e7
Merge #1693
1693: Document aliases for functions like getuid() r=asomers a=rtzoeller

Add the autocfg crate as a build dependency, and introduce `has_doc_alias` as a conditional compilation symbol.

Closes #1673.

Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2022-06-27 00:52:16 +00:00
Ryan Zoeller
1fa1bb19b0 Document aliases for functions like getuid()
Add the autocfg crate as a build dependency, and introduce
has_doc_alias as a conditional compilation symbol.
2022-06-26 19:36:45 -05:00
bors[bot]
84b02b98a9
Merge #1751
1751: Pin cross to 0.2.1, as 0.2.2 requires Rust 1.58.1 r=asomers a=rtzoeller



Co-authored-by: Ryan Zoeller <rtzoeller@rtzoeller.com>
2022-06-26 03:58:33 +00:00