Commit graph

14322 commits

Author SHA1 Message Date
Raoul Strackx
daedb7920f Prevent attacker from manipulating FPU tag word used in SGX enclave
Insufficient sanitization of the x87 FPU tag word in the trusted enclave runtime allowed unprivileged adversaries in the containing host application to induce incoherent or unexpected results for ABI-compliant compiled enclave application code that uses the x87 FPU.

Vulnerability was disclosed to us by Fritz Alder, Jo Van Bulck, David Oswald and Frank Piessens
2020-06-18 12:11:39 +02:00
Dylan DPC
3c437e5733
Rollup merge of #73389 - lzutao:from, r=kennytm
Use `Ipv4Addr::from<[u8; 4]>` when possible

Resolve this comment: https://github.com/rust-lang/rust/pull/73331#discussion_r440098369
2020-06-16 15:08:47 +02:00
Dylan DPC
94105c2da3
Rollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu
Use track caller for bug! macro
2020-06-16 15:08:42 +02:00
Lzu Tao
0e6c333ca6 Use Ipv4Addr::from<[u8; 4]> when possible 2020-06-16 01:54:17 +00:00
Lzu Tao
64a6de25ea Join mutiple lines if it is more readable 2020-06-15 13:15:47 +00:00
Ralf Jung
54bd077cd6
Rollup merge of #73331 - hermitcore:listen, r=kennytm
extend network support for HermitCore

- add basic support of TcpListerner for HermitCore
- revise TcpStream to support peer_addr
2020-06-15 12:01:14 +02:00
Ralf Jung
202499fb43
Rollup merge of #73304 - dtolnay:socketeq, r=Mark-Simulacrum
Revert heterogeneous SocketAddr PartialEq impls

Originally added in #72239.

These lead to inference regressions (mostly in tests) in code that looks like:

```rust
let socket = SocketAddrV4::new(Ipv4Addr::new(127, 0, 0, 1), 8080);
assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
```

That compiles as of stable 1.44.0 but fails in beta with:

```console
error[E0284]: type annotations needed
 --> src/main.rs:3:41
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
  |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
  |
  = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
help: consider specifying the type argument in the method call
  |
3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
  |
```

Closes #73242.
2020-06-15 12:01:13 +02:00
Ralf Jung
ec6fe42dd4
Rollup merge of #73139 - poliorcetics:cstring-from-vec-with-nul, r=dtolnay
Add methods to go from a nul-terminated Vec<u8> to a CString

Fixes #73100.

Doc tests have been written and the documentation on the error type
updated too.

I used `#[stable(feature = "cstring_from_vec_with_nul", since = "1.46.0")]` but I don't know if the version is correct.
2020-06-15 12:01:09 +02:00
Ralf Jung
7c8b9413b8
Rollup merge of #73104 - poliorcetics:explicit-mutex-drop-example, r=dtolnay
Example about explicit mutex dropping

Fixes #67457.

Following the remarks made in #73074, I added an example on the main `Mutex` type, with a situation where there is mutable data and a computation result.

In my testing it is effectively needed to explicitly drop the lock, else it deadlocks.

r? @dtolnay because you were the one to review the previous PR.
2020-06-15 12:01:07 +02:00
Stefan Lankes
76f1581a25 remove obsolete , to pass the format check 2020-06-15 10:05:14 +02:00
Stefan Lankes
a8e3746e91 add comment about the usage of Arc 2020-06-15 09:29:32 +02:00
Stefan Lankes
6c983a7335 use Ipv6Addr::from to build the IPv6 address 2020-06-15 08:53:58 +02:00
Stefan Lankes
9c9f21fb23 Revert "simplify conversion to IpAddr::V6"
This reverts commit d221ffc68e.
2020-06-15 08:43:44 +02:00
Stefan Lankes
aa53a037a2 Revert "changes to pass the format check"
This reverts commit 9d596b50f1.
2020-06-15 08:43:08 +02:00
Stefan Lankes
810ba39563 remove obsolete line 2020-06-15 08:07:56 +02:00
Stefan Lankes
9d596b50f1 changes to pass the format check 2020-06-15 07:28:53 +02:00
Stefan Lankes
d221ffc68e simplify conversion to IpAddr::V6 2020-06-14 23:43:54 +02:00
Alexis Bourget
47cc5cca7e Update to use the new error type and correctly compile the doc tests 2020-06-14 23:22:36 +02:00
Alexis Bourget
685f06612d Add a new error type for the new method 2020-06-14 23:21:40 +02:00
Alexis Bourget
5f4eb27a0d Removing the TryFrom impl 2020-06-14 19:31:11 +02:00
Stefan Lankes
fd86a84720 use latest interface to HermitCore 2020-06-14 00:39:14 +02:00
Stefan Lankes
c99116afe3 remove unused function 2020-06-14 00:38:31 +02:00
Stefan Lankes
71d41d9e9f add TcpListener support for HermitCore
Add basic support of TcpListerner for HermitCore.
In addition, revise TcpStream to support peer_addr.
2020-06-13 20:51:00 +02:00
David Tolnay
204c236ad5
Add test for comparing SocketAddr with inferred right-hand side 2020-06-13 10:21:11 -07:00
David Tolnay
c010e711ca
Rewrap comments in Mutex example 2020-06-13 10:11:02 -07:00
Poliorcetics
34b3ff06e1
Clarify the scope-related explanation
Based on the review made by dtolnay.
2020-06-13 18:43:37 +02:00
Poliorcetics
f747073fc1
Apply suggestions from code review
Co-authored-by: David Tolnay <dtolnay@gmail.com>
2020-06-13 18:41:01 +02:00
David Tolnay
c45231ca55
Revert heterogeneous SocketAddr PartialEq impls
These lead to inference regressions (mostly in tests) in code that looks
like:

    let socket = std::net::SocketAddrV4::new(std::net::Ipv4Addr::new(127, 0, 0, 1), 8080);
    assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());

That compiles as of stable 1.44.0 but fails in beta with:

    error[E0284]: type annotations needed
     --> src/main.rs:3:41
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse().unwrap());
      |                                         ^^^^^ cannot infer type for type parameter `F` declared on the associated function `parse`
      |
      = note: cannot satisfy `<_ as std::str::FromStr>::Err == _`
    help: consider specifying the type argument in the method call
      |
    3 |     assert_eq!(socket, "127.0.0.1:8080".parse::<F>().unwrap());
      |
2020-06-12 22:13:55 -07:00
Alexis Bourget
6b955268d7 Fix the link in the TryFrom impl 2020-06-11 16:55:03 +02:00
Alexis Bourget
7f3bb398fa Add a TryFrom<Vec<u8>> impl that mirror from_vec_with_nul 2020-06-11 00:36:55 +02:00
Lzu Tao
fff822fead Migrate to numeric associated consts 2020-06-10 01:35:47 +00:00
Alexis Bourget
1312d30a6a Remove a lot of unecessary/duplicated comments 2020-06-09 22:40:30 +02:00
Alexis Bourget
b03164e667 Move to unstable, linking the issue 2020-06-09 22:15:05 +02:00
bors
fd4b177aab Auto merge of #72655 - jethrogb:sgx-lvi-hardening, r=petrochenkov
Enable LVI hardening for x86_64-fortanix-unknown-sgx

This implements mitigations for the Load Value Injection vulnerability (CVE-2020-0551) for the `x86_64-fortanix-unknown-sgx` target by enabling new LLVM passes. More information about LVI and mitigations may be found at https://software.intel.com/security-software-guidance/insights/deep-dive-load-value-injection.

This PR unconditionally enables the mitigations for `x86_64-fortanix-unknown-sgx` since there is no available hardware that doesn't require the mitigations. This may be reconsidered in the future.

* [x] This depends on https://github.com/rust-lang/compiler-builtins/pull/359/
2020-06-08 20:10:07 +00:00
Alexis Bourget
496818ccd7 Add methods to go from a nul-terminated Vec<u8> to a CString, checked and unchecked.
Doc tests have been written and the documentation on the error type
updated too.
2020-06-08 18:38:48 +02:00
Poliorcetics
fdef1a5915
Simply use drop instead of std::mem::drop
Co-authored-by: LeSeulArtichaut <leseulartichaut@gmail.com>
2020-06-08 16:29:47 +02:00
Ralf Jung
824ea6bf2d
Rollup merge of #72963 - poliorcetics:cstring-from-raw, r=dtolnay
Cstring `from_raw` and `into_raw` safety precisions

Fixes #48525.
Fixes #68456.

This issue had two points:

- The one about `from_raw` has been addressed (I hope).
- The other one, about `into_raw`, has only been partially fixed.

About `into_raw`: the idea was to:

> steer users away from using the pattern of CString::{into_raw,from_raw} when interfacing with C APIs that may change the effective length of the string by writing interior NULs or erasing the final NUL

I tried making a `Vec<c_char>` like suggested but my current solution feels very unsafe and *hacky* to me (most notably the type cast), I included it here to make it available for discussion:

```rust
fn main() {
    use std::os::raw::c_char;

    let v = String::from("abc")
        .bytes()
        // From u8 to i8,
        // I feel like it will be a problem for values of u8 > 255
        .map(|c| c as c_char)
        .collect::<Vec<_>>();

    dbg!(v);
}
```
2020-06-08 09:55:30 +02:00
Ralf Jung
89d8979c9a
Rollup merge of #72761 - poliorcetics:use-keyword-doc, r=Dylan-DPC
Added the documentation for the 'use' keyword

This is a partial fix of #34601.

I heavily inspired myself from the Reference on the `use` keyword.

I checked the links when compiling the documentation, they should be ok.

I also added an example for the wildcard `*` in the case of types, because it's behaviour is not *import everything* like one might think at first.
2020-06-08 09:55:24 +02:00
Alexis Bourget
9c8f881ccd Improved the example to work with mutable data, providing a reason for the mutex holding it 2020-06-07 23:42:55 +02:00
Alexis Bourget
95c4899e55 Added an example where explicitly dropping a lock is necessary/a good idea. 2020-06-07 23:36:07 +02:00
Jethro Beekman
ea48f2e4da Enable LVI hardening for x86_64-fortanix-unknown-sgx 2020-06-07 12:12:30 +02:00
bors
84ec8238b1 Auto merge of #72957 - Mark-Simulacrum:bootstrap-bump, r=sfackler
Bump bootstrap compiler to 1.45

Pretty standard update.
2020-06-05 11:11:26 +00:00
Brian Cain
d0ee0dc9de Hexagon libstd: fix typo for c_ulonglong 2020-06-03 22:47:48 -05:00
Alexis Bourget
87abe174c4 Added a warning to CString::into_raw too 2020-06-03 23:55:41 +02:00
Alexis Bourget
00a7b56bab Added the documentation about length to CString::from_raw 2020-06-03 23:32:26 +02:00
Mark Rousskov
7139342249 Bump to 1.46 2020-06-03 15:27:51 -04:00
Dylan DPC
ec2826cc2e
Rollup merge of #72924 - JohnTitor:stabilize-buf-capacity, r=shepmaster
Stabilize `std::io::Buf{Reader, Writer}::capacity`

Closes #68833
FCP is done here: https://github.com/rust-lang/rust/issues/68833#issuecomment-637596083
2020-06-03 18:05:41 +02:00
Yuki Okushi
7d27c63114
Stabilize std::io::Buf{Reader, Writer}::capacity 2020-06-03 04:32:22 +09:00
Alexis Bourget
d8cc2c1e4f Add a warning about infinite reading in read_(until|line) 2020-06-01 16:19:10 +02:00
bors
f6072cab13 Auto merge of #72813 - RalfJung:rollup-4ko6q8j, r=RalfJung
Rollup of 5 pull requests

Successful merges:

 - #72683 (from_u32_unchecked: check validity, and fix UB in Wtf8)
 - #72715 (Account for trailing comma when suggesting `where` clauses)
 - #72745 (generalize Borrow<[T]> for Interned<'tcx, List<T>>)
 - #72749 (Update stdarch submodule to latest head)
 - #72781 (Use `LocalDefId` instead of `NodeId` in `resolve_str_path_error`)

Failed merges:

r? @ghost
2020-05-31 13:39:05 +00:00