Fix datagram SPTPS.

Commit dd07c9fc1f 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)".
This commit is contained in:
Guus Sliepen 2013-01-21 13:47:46 +01:00
parent cc3c69c892
commit 3a039ece25

View 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, &netlen, 2);
memcpy(buffer + 2, data, len); memcpy(buffer + 2, data, len);
memcpy(&seqno, buffer + 2, 4);
if(!digest_verify(&s->indigest, buffer, len - 14, buffer + len - 14)) if(!digest_verify(&s->indigest, buffer, len - 14, buffer + len - 14))
return error(s, EIO, "Invalid HMAC"); 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++; s->received++;
// Decrypt. // Decrypt.
memcpy(&seqno, buffer + 2, 4);
cipher_set_counter(&s->incipher, &seqno, sizeof seqno); cipher_set_counter(&s->incipher, &seqno, sizeof seqno);
if(!cipher_counter_xor(&s->incipher, buffer + 6, len - 4, buffer + 6)) if(!cipher_counter_xor(&s->incipher, buffer + 6, len - 4, buffer + 6))
return false; return false;