| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Older versions of `h2` have a bug that causes empty HTTP/2 DATA frames
to be queued without limit if the streams are not read from quickly
enough.
According to the [hyper advisory]:
> To determine if vulnerable, all these things must be true:
>
> * You are using HTTP/2, either as a server or a client.
> * Your application does not fully drain incoming request
> or response bodies (for example, a proxy applying backpressure,
> or a client that delays reading the body).
> * The direct remote peer is malicious and intentionally
> sends large numbers of empty DATA frames.
To my knowledge, the only non-example crates that use `hyper` are `arti`
and `tor-dirserver`. Both of them run HTTP/1.1 servers, so I don't
believe we're affected by the `h2` bug.
[hyper advisory]: https://github.com/hyperium/hyper/security/advisories/GHSA-q83h-524g-xf6h
|
| |\
| |
| |
| |
| | |
Implement kludge to allow use of DirMgr as a backend for DirServer.
See merge request tpo/core/arti!4298
|
| | |
| |
| |
| | |
Part of #2657
|
| | |
| |
| |
| |
| |
| |
| | |
This is part of #2657. The goal here is to use DirMgr as a
temporary backend for tor-dirserver, so that we can have a
sort-of-working directory cache that can be used for testing guards
before tor-dirserver is complete.
|
| |/
|
|
|
|
|
|
|
|
| |
This commit removes the getters in database.rs. If the overall
tor-netdoc refactoring has taught us something, then that the use of
getters can be quite annoying.
Therefore, this commit removes the getters and marks the respective
fields as pub. Given that these data types are pub(crate) only right
now, it does not matter a lot anyways.
|
| |\
| |
| |
| |
| | |
tor-proto: Upgrade statrs dev-dependency and remove default features
See merge request tpo/core/arti!4283
|
| | |
| |
| |
| |
| | |
This doesn't appear to be needed, and removes an nalgebra dev-dependency
which should help build times.
|
| | |
| |
| |
| |
| |
| | |
```bash
cargo upgrade --incompatible allow -p statrs
```
|
| |/
|
| |
This reverts merge request !4264
|
| |\
| |
| |
| |
| | |
Upgrade to weak-table 0.4.0
See merge request tpo/core/arti!4278
|
| | |
| |
| |
| |
| |
| |
| |
| | |
Weak-table 0.4.0 replaces the backend with hashbrown for improved
performance and correctness. It adds a bunch of APIs for parity
with std::collections, and deprecates the risky `ahash` feature.
(I'm the maintainer at this point.)
|
| | | |
|
| | |
| |
| |
| | |
This is actually quite simple now.
|
| |/ |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
```bash
cargo set-version --bump patch -p hashx
```
|
| |
|
|
|
|
| |
```bash
cargo set-version --bump patch -p arti
```
|
| |
|
|
|
|
|
| |
```bash
readarray -t bump < <(maint/list-crates | grep -P '^tor-|^arti-')
for crate in "${bump[@]}"; do cargo set-version --bump minor -p "${crate}"; done
```
|
| |
|
|
| |
Version 3.0.3 was yanked.
|
| |
|
|
|
|
| |
Fixes unsoundness for RUSTSEC-2026-0221.
https://rustsec.org/advisories/RUSTSEC-2026-0221.html
|
| |
|
|
|
|
|
|
|
| |
Give a tx to the descriptor task so it can request the keys when
building a new descriptor.
Implement the crypto task handling of that command channel.
Signed-off-by: David Goulet <[email protected]>
|
| |
|
|
| |
Signed-off-by: David Goulet <[email protected]>
|
| |
|
|
|
|
|
|
|
| |
This is the basics, with many TODO(relay), for a relay descriptor upload
task which uses tor-dirpublish::Publisher.
Future commits will implement the several todo!().
Signed-off-by: David Goulet <[email protected]>
|
| |
|
|
| |
We don't need to open-code this any more.
|
| |\
| |
| |
| |
| | |
arti-dirauth: Build an arti consensus method plugin binary, and implement list-methods
See merge request tpo/core/arti!4225
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
hashx: Update dynasmrt to 5.1.0
Closes #2637
See merge request tpo/core/arti!4232
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This fixes a rust future-incompatibilities warning, which was caused by
the proc-macro-error2 crate.
The dynasmrt crate switched to a fork proc-macro-error3 to fix this.
|
| |/ / |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| | |
To pick up this fix:
* BETA: Allow user-defined expansions whose definition is just
a string literal `"..." within `${concat }` and `$"..."`.
which I have just released.
|
| |/
|
|
|
|
|
|
|
| |
This will be used shortly, as we need to spawn a `DirMirror::serve()`
task from `TorRelay::run()` for handling the incoming directory stream
requests.
The `DirMirror` is currently built from dummy data because there is no
config for it yet.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
| |
For calculating `ipv6-policy` in routerdescs.
Also implement for v4 for the benefit of future tests of approximate
port policy summaries, for possible future protocol change, and for
completeness.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes cargo-audit failure, due to spin 0.9.8 being yanked:
The changelog entry for 0.9.9 says:
> ### Fixed
>
> - Unsoundness in `Once::force_into_inner`, `Once::try_into_inner`, and
> `Once::into_inner_unchecked`. \[...]
In our stack, spin <- lazy_static 1.5.0 (only). lazy_static
1.5.0 (git tag) has no hits for `into_inner`. So I think we don't
have any calls to the previously-unsound methods.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
RUSTSEC-2026-0204 doesn't affect Arti, so this won't need a TROVE.
I checked using the procedure documented under "Checking whether we are
affected by a RUSTSEC" in `doc/dev/SecurityResponse.md`. I applied the
following patch to my local `crossbeam-epoch` to remove the affected
impls, and confirmed that Arti still builds successfully with it:
```diff
diff --git a/crossbeam-epoch/src/atomic.rs b/crossbeam-epoch/src/atomic.rs
index 41b4cd91..8b9b3a01 100644
--- a/crossbeam-epoch/src/atomic.rs
+++ b/crossbeam-epoch/src/atomic.rs
@@ -939,14 +939,6 @@ impl<T: ?Sized + Pointable> fmt::Debug for Atomic<T> {
}
}
-impl<T: ?Sized + Pointable> fmt::Pointer for Atomic<T> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- let data = self.data.load(Ordering::SeqCst);
- let (raw, _) = decompose_tag::<T>(data);
- fmt::Pointer::fmt(&(unsafe { T::deref(raw) as *const _ }), f)
- }
-}
-
impl<T: ?Sized + Pointable> Clone for Atomic<T> {
/// Returns a copy of the atomic value.
///
@@ -1660,12 +1652,6 @@ impl<T: ?Sized + Pointable> fmt::Debug for Shared<'_, T> {
}
}
-impl<T: ?Sized + Pointable> fmt::Pointer for Shared<'_, T> {
- fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
- fmt::Pointer::fmt(&(unsafe { self.deref() as *const _ }), f)
- }
-}
-
impl<T: ?Sized + Pointable> Default for Shared<'_, T> {
fn default() -> Self {
Shared::null()
```
Note: the reason the `fmt::Pointer` impls I removed above look slightly
different from the ones in the [crossbeam-rs MR] from the RUSTSEC page
is because my patched `crossbeam-epoch` is based on the
`crossbeam-epoch-0.9.18` tag rather than `main`.
[crossbeam-rs MR]: https://github.com/crossbeam-rs/crossbeam/pull/1273/files
|
| |\
| |
| |
| |
| | |
Upgrade cipher, aes, and ctr.
See merge request tpo/core/arti!4195
|
| | | |
|
| |\ \
| | |
| | |
| | |
| | |
| | |
| | | |
Negotiate flowcontrol-cc and CGO on onion services
Closes #2473 and #1948
See merge request tpo/core/arti!4135
|