]> git.ipfire.org Git - thirdparty/chrony.git/commitdiff
nts: check for negative length in NNA_DecryptAuthEF()
authorMiroslav Lichvar <mlichvar@redhat.com>
Thu, 9 Jul 2020 11:13:13 +0000 (13:13 +0200)
committerMiroslav Lichvar <mlichvar@redhat.com>
Thu, 9 Jul 2020 12:47:33 +0000 (14:47 +0200)
As other functions that accept a signed length, make sure it is sane in
NNA_DecryptAuthEF() too.

nts_ntp_auth.c
test/unit/nts_ntp_auth.c

index 8896d8ef57cfe3371f424c11f346f25a8f5d6147..2ff6d0d03ee7cc67a074b85489ef84e75050a322 100644 (file)
@@ -128,6 +128,9 @@ NNA_DecryptAuthEF(NTP_Packet *packet, NTP_PacketInfo *info, SIV_Instance siv, in
   void *ef_body;
   struct AuthHeader *header;
 
+  if (buffer_length < 0)
+    return 0;
+
   if (!NEF_ParseField(packet, info->length, ef_start,
                       NULL, &ef_type, &ef_body, &ef_body_length))
     return 0;
index dc5143d98f61377427e45d3c83ed225a73656ece..307b93b81c416746f72085567a28108389668ec7 100644 (file)
@@ -82,6 +82,10 @@ test_unit(void)
     TEST_CHECK(r);
     TEST_CHECK(info.length - packet_length >= min_ef_length);
 
+    r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
+                          -1, &plaintext2_length);
+    TEST_CHECK(!r);
+
     r = NNA_DecryptAuthEF(&packet, &info, siv, packet_length, plaintext2,
                           sizeof (plaintext2), &plaintext2_length);
     TEST_CHECK(r);