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 fe97844..8242cad 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;