aboutsummaryrefslogtreecommitdiffstats
path: root/src/wireguard/router/receive.rs
diff options
context:
space:
mode:
authorMathias Hall-Andersen <mathias@hall-andersen.dk>2020-02-21 00:31:00 +0100
committerMathias Hall-Andersen <mathias@hall-andersen.dk>2020-02-21 00:31:00 +0100
commit8de2305cc73920d838e11634dc9ec619c2608a78 (patch)
tree908d2f34bfd0a7a329f4f7223ad40ba809c66a13 /src/wireguard/router/receive.rs
parentMore comprehensive unit tests for router (diff)
downloadwireguard-rs-8de2305cc73920d838e11634dc9ec619c2608a78.tar.xz
wireguard-rs-8de2305cc73920d838e11634dc9ec619c2608a78.zip
Fixed unit tests
Diffstat (limited to 'src/wireguard/router/receive.rs')
-rw-r--r--src/wireguard/router/receive.rs7
1 files changed, 3 insertions, 4 deletions
diff --git a/src/wireguard/router/receive.rs b/src/wireguard/router/receive.rs
index 0e5cb0f..45ef423 100644
--- a/src/wireguard/router/receive.rs
+++ b/src/wireguard/router/receive.rs
@@ -3,7 +3,7 @@ use super::ip::inner_length;
use super::messages::TransportHeader;
use super::queue::{ParallelJob, Queue, SequentialJob};
use super::types::Callbacks;
-use super::{REJECT_AFTER_MESSAGES, SIZE_KEEPALIVE};
+use super::{REJECT_AFTER_MESSAGES, SIZE_TAG};
use super::super::{tun, udp, Endpoint};
@@ -93,7 +93,6 @@ impl<E: Endpoint, C: Callbacks, T: tun::Writer, B: udp::Writer<E>> ParallelJob
debug_assert_eq!(nonce.len(), CHACHA20_POLY1305.nonce_len());
nonce[4..].copy_from_slice(header.f_counter.as_bytes());
let nonce = Nonce::assume_unique_for_key(nonce);
-
// do the weird ring AEAD dance
let key = LessSafeKey::new(
UnboundKey::new(&CHACHA20_POLY1305, &job.state.keypair.recv.key[..]).unwrap(),
@@ -111,7 +110,7 @@ impl<E: Endpoint, C: Callbacks, T: tun::Writer, B: udp::Writer<E>> ParallelJob
}
// check crypto-key router
- packet.len() == SIZE_KEEPALIVE || peer.device.table.check_route(&peer, &packet)
+ packet.len() == SIZE_TAG || peer.device.table.check_route(&peer, &packet)
})();
// remove message in case of failure:
@@ -174,7 +173,7 @@ impl<E: Endpoint, C: Callbacks, T: tun::Writer, B: udp::Writer<E>> SequentialJob
// check if should be written to TUN
// (keep-alive and malformed packets will have no inner length)
if let Some(inner) = inner_length(packet) {
- if inner >= packet.len() {
+ if inner + SIZE_TAG <= packet.len() {
let _ = peer.device.inbound.write(&packet[..inner]).map_err(|e| {
log::debug!("failed to write inbound packet to TUN: {:?}", e);
});