aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-wireguard.c
diff options
context:
space:
mode:
Diffstat (limited to 'epan/dissectors/packet-wireguard.c')
-rw-r--r--epan/dissectors/packet-wireguard.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/epan/dissectors/packet-wireguard.c b/epan/dissectors/packet-wireguard.c
index 527dadc6ae..e6b9a1e0bd 100644
--- a/epan/dissectors/packet-wireguard.c
+++ b/epan/dissectors/packet-wireguard.c
@@ -1145,8 +1145,12 @@ wg_mac1_key_probe(tvbuff_t *tvb, gboolean is_initiation)
return NULL;
}
- const guint8 *mac1_msgdata = tvb_get_ptr(tvb, 0, mac1_offset);
+ guint8 *mac1_msgdata = (guint8 *)tvb_memdup(wmem_packet_scope(), tvb, 0, mac1_offset);
const guint8 *mac1_output = tvb_get_ptr(tvb, mac1_offset, 16);
+
+ // MAC1 is computed over a message with three reserved bytes set to zero.
+ mac1_msgdata[1] = mac1_msgdata[2] = mac1_msgdata[3] = 0;
+
// Find public key that matches the 16-byte MAC1 field.
GHashTableIter iter;
gpointer value;