mirror of
https://github.com/amnezia-vpn/amneziawg-linux-kernel-module.git
synced 2026-10-23 03:26:45 +09:00
fix: do not append random trailers to I1-I5 and dummy junk packets
This commit is contained in:
1 parent
3c38e168be
commit
4569c4c67f
3 files changed
+9
-7
No files matched your search
+4
-4
@@ -53,7 +53,7 @@ static void wg_packet_send_handshake_initiation(struct wg_peer *peer)
|
||||
if (spec->pkt_size > 0) {
|
||||
mutex_lock(&spec->lock);
|
||||
jp_spec_applymods(spec, peer);
|
||||
wg_socket_send_buffer_to_peer(peer, spec->pkt, spec->pkt_size, 0, 0);
|
||||
wg_socket_send_buffer_to_peer(peer, spec->pkt, spec->pkt_size, 0, 0, false);
|
||||
atomic_inc(&peer->jp_packet_counter);
|
||||
mutex_unlock(&spec->lock);
|
||||
}
|
||||
@@ -72,7 +72,7 @@ static void wg_packet_send_handshake_initiation(struct wg_peer *peer)
|
||||
|
||||
get_random_bytes(buffer, junk_packet_size);
|
||||
get_random_bytes(&ds, 1);
|
||||
wg_socket_send_buffer_to_peer(peer, buffer, junk_packet_size, ds, 0);
|
||||
wg_socket_send_buffer_to_peer(peer, buffer, junk_packet_size, ds, 0, false);
|
||||
}
|
||||
|
||||
kfree(buffer);
|
||||
@@ -86,7 +86,7 @@ static void wg_packet_send_handshake_initiation(struct wg_peer *peer)
|
||||
atomic64_set(&peer->last_sent_handshake,
|
||||
ktime_get_coarse_boottime_ns());
|
||||
wg_socket_send_buffer_to_peer(peer, &packet, sizeof(packet),
|
||||
HANDSHAKE_DSCP, wg->init_padding);
|
||||
HANDSHAKE_DSCP, wg->init_padding, true);
|
||||
wg_timers_handshake_initiated(peer);
|
||||
}
|
||||
}
|
||||
@@ -158,7 +158,7 @@ void wg_packet_send_handshake_response(struct wg_peer *peer)
|
||||
wg_socket_send_buffer_to_peer(peer, &packet,
|
||||
sizeof(packet),
|
||||
HANDSHAKE_DSCP,
|
||||
wg->resp_padding);
|
||||
wg->resp_padding, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -187,14 +187,16 @@ int wg_socket_send_skb_to_peer(struct wg_peer *peer, struct sk_buff *skb, u8 ds)
|
||||
}
|
||||
|
||||
int wg_socket_send_buffer_to_peer(struct wg_peer *peer, void *buffer,
|
||||
size_t len, u8 ds, size_t padding)
|
||||
size_t len, u8 ds, size_t padding, bool trailer)
|
||||
{
|
||||
struct sk_buff *skb;
|
||||
void *crypto = NULL;
|
||||
size_t trailer_len;
|
||||
struct chacha_state state;
|
||||
|
||||
trailer_len = wg_peer_skb_random_trailer(peer, peer->device, padding + len);
|
||||
trailer_len = trailer
|
||||
? wg_peer_skb_random_trailer(peer, peer->device, padding + len)
|
||||
: 0;
|
||||
|
||||
skb = alloc_skb(len + padding + trailer_len + SKB_HEADER_LEN, GFP_ATOMIC);
|
||||
if (unlikely(!skb))
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ int wg_socket_init(struct wg_device *wg, u16 port);
|
||||
void wg_socket_reinit(struct wg_device *wg, struct sock *new4,
|
||||
struct sock *new6);
|
||||
int wg_socket_send_buffer_to_peer(struct wg_peer *peer, void *data,
|
||||
size_t len, u8 ds, size_t padding);
|
||||
size_t len, u8 ds, size_t padding, bool trailer);
|
||||
int wg_socket_send_skb_to_peer(struct wg_peer *peer, struct sk_buff *skb,
|
||||
u8 ds);
|
||||
int wg_socket_send_buffer_as_reply_to_skb(struct wg_device *wg,
|
||||
|
||||
Reference in new issue
Block a user