| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
| |
Part of #872: Now that const generics are in, we have better ways to
express converting slices into array-references.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, if somebody wrote this code, an attacker could easily
use it to cause an OOM panic:
```
let n = r.take_u64();
let items: Vec<Foo> = r.extract_n(n as usize)?;
```
The first line of defense here is not to write protocols like that:
we don't actually _have_ any 32-bit counters in our protocol
AFAICT.
The second line of defense is to pre-check `n` for reasonableness
before calling `extract_n`.
Here we add a third line of defense: whereas previously we would do
`Vec::with_capacity(n)` in `extract_n`, we now allocate an initial
capacity of `min(n, r.remaining())`. This ensures that the size of
the allocation can't exceed the remaining length of the message,
which (for our cell types at least) should prevent it from
overflowing or running OOM.
|
| | |
|
| | |
|
| |
|
|
|
| |
We'll use this to implement signature and MAC checking for
EstablishIntro cells.
|
| |
|
|
| |
See c489e1d9118edd842f80b76a636037524a45ee45
|
| |
|
|
| |
I disagree with almost all of these layout decisions...
|
| |
|
|
|
|
|
|
|
|
| |
This eliminates the possibility of writing the bug of failing to call
`should_be_exhausted`.
As per this discussion
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/572#note_2811464
Fixes #498
|
| | |
|
| | |
|
| |
|
|
| |
We'll want this in a moment.
|
| |
|
|
|
| |
I'm alright with allowing cognitive-complexity violations in the
tests.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
Now that we have const generics, we can use them. We can also avoid
an extra clone in the implementation for [u8; N].
Nothing in our codebase requires that we use Reader or Writer on a
GenericArray holding anything other than u8, so I've switched back
to the more efficient implementation there.
I've added a fuzzer case for the new method, but apparently rustc nightly isn't working too
well with fuzzers for me; I'm going to try it tomorrow.
|
|
|
This will cause some pain for now, but now is really the best time
to do this kind of thing.
|