Fix datagram SPTPS.
authorGuus Sliepen <guus@tinc-vpn.org>
Mon, 21 Jan 2013 12:47:46 +0000 (13:47 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Mon, 21 Jan 2013 12:47:46 +0000 (13:47 +0100)
Commit dd07c9fc1f37bed8d1f67ffe7b203f61e7914edf broke the reception of datagram
SPTPS packets, by undoing the conversion of the sequence number to host byte
order before comparison. This caused error messages like "Packet is 16777215
seqs in the future, dropped (1)".

src/sptps.c

index fe978441a912b62249a4f7192b1fecd189afe3a2..8242cadf096875a202d894c423ac122bd8fd1057 100644 (file)
@@ -447,8 +447,6 @@ static bool sptps_receive_data_datagram(sptps_t *s, const char *data, size_t len
        memcpy(buffer, &netlen, 2);
        memcpy(buffer + 2, data, len);
 
-       memcpy(&seqno, buffer + 2, 4);
-
        if(!digest_verify(&s->indigest, buffer, len - 14, buffer + len - 14))
                return error(s, EIO, "Invalid HMAC");
 
@@ -492,6 +490,7 @@ static bool sptps_receive_data_datagram(sptps_t *s, const char *data, size_t len
                s->received++;
 
        // Decrypt.
+       memcpy(&seqno, buffer + 2, 4);
        cipher_set_counter(&s->incipher, &seqno, sizeof seqno);
        if(!cipher_counter_xor(&s->incipher, buffer + 6, len - 4, buffer + 6))
                return false;