From: Guus Sliepen Date: Sat, 6 Jun 2009 18:14:51 +0000 (+0200) Subject: Fix pointer arithmetic when creating and verifying message authentication codes. X-Git-Tag: import-tinc-1.1~593 X-Git-Url: http://git.meshlink.io/?p=meshlink;a=commitdiff_plain;h=9b129c07e273ae113f3c67a9feeee82e8146f3a1 Fix pointer arithmetic when creating and verifying message authentication codes. --- diff --git a/src/net_packet.c b/src/net_packet.c index af71af90..8bf41c39 100644 --- a/src/net_packet.c +++ b/src/net_packet.c @@ -166,7 +166,7 @@ static bool try_mac(node_t *n, const vpn_packet_t *inpkt) if(!digest_active(&n->indigest) || inpkt->len < sizeof inpkt->seqno + digest_length(&n->indigest)) return false; - return digest_verify(&n->indigest, &inpkt->seqno, inpkt->len, &inpkt->seqno + inpkt->len); + return digest_verify(&n->indigest, &inpkt->seqno, inpkt->len, (const char *)&inpkt->seqno + inpkt->len); } static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) @@ -196,7 +196,7 @@ static void receive_udppacket(node_t *n, vpn_packet_t *inpkt) /* Check the message authentication code */ - if(digest_active(&n->indigest) && !digest_verify(&n->indigest, &inpkt->seqno, inpkt->len, &inpkt->seqno + inpkt->len)) { + if(digest_active(&n->indigest) && !digest_verify(&n->indigest, &inpkt->seqno, inpkt->len, (const char *)&inpkt->seqno + inpkt->len)) { ifdebug(TRAFFIC) logger(LOG_DEBUG, _("Got unauthenticated packet from %s (%s)"), n->name, n->hostname); return; } @@ -369,7 +369,7 @@ static void send_udppacket(node_t *n, vpn_packet_t *origpkt) { /* Add the message authentication code */ if(digest_active(&n->outdigest)) { - digest_create(&n->outdigest, &inpkt->seqno, inpkt->len, &inpkt->seqno + inpkt->len); + digest_create(&n->outdigest, &inpkt->seqno, inpkt->len, (char *)&inpkt->seqno + inpkt->len); inpkt->len += digest_length(&n->outdigest); }