]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Check that buffer length in dns_message_renderbegin
authorMark Andrews <marka@isc.org>
Thu, 16 Nov 2023 00:15:49 +0000 (11:15 +1100)
committerMark Andrews <marka@isc.org>
Tue, 5 Dec 2023 22:06:31 +0000 (09:06 +1100)
The maximum DNS message size is 65535 octets. Check that the buffer
being passed to dns_message_renderbegin does not exceed this as the
compression code assumes that all offsets are no bigger than this.

(cherry picked from commit a06951323496ee084b49e01d436616adf2d67f1b)

lib/dns/include/dns/message.h
lib/dns/message.c

index 82140214835543fa5faece99f25c8c9ed53cae07..fafa86a252fc0d4c7992a976091fd0367c24d6e4 100644 (file)
@@ -542,7 +542,7 @@ dns_message_renderbegin(dns_message_t *msg, dns_compress_t *cctx,
  *
  *\li  'cctx' be valid.
  *
- *\li  'buffer' is a valid buffer.
+ *\li  'buffer' is a valid buffer with length less than 65536.
  *
  * Side Effects:
  *
index 09645c228a3834d925f21b85c7d7712f92fe67a3..7f34cd7bf812faedcc8bffa114a7ae6df2d78c2e 100644 (file)
@@ -1789,6 +1789,7 @@ dns_message_renderbegin(dns_message_t *msg, dns_compress_t *cctx,
 
        REQUIRE(DNS_MESSAGE_VALID(msg));
        REQUIRE(buffer != NULL);
+       REQUIRE(isc_buffer_length(buffer) < 65536);
        REQUIRE(msg->buffer == NULL);
        REQUIRE(msg->from_to_wire == DNS_MESSAGE_INTENTRENDER);