diff --git a/lib/dns/journal.c b/lib/dns/journal.c index f59855dd63..48fbb433aa 100644 --- a/lib/dns/journal.c +++ b/lib/dns/journal.c @@ -2043,6 +2043,14 @@ read_one_rr(dns_journal_t *j) { ttl = isc_buffer_getuint32(&j->it.source); rdlen = isc_buffer_getuint16(&j->it.source); + if (rdlen > DNS_RDATA_MAXLENGTH) { + isc_log_write(JOURNAL_COMMON_LOGARGS, ISC_LOG_ERROR, + "%s: journal corrupt: impossible rdlen " + "(%u bytes)", + j->filename, rdlen); + FAIL(ISC_R_FAILURE); + } + /* * Parse the rdata. */