An assertion is triggered inside `isc_time_set` when dnstap-read calls
`dns_dt_parse` on dnstap files with query/response time nanosecond
fields greater than a second.
Avoid the assertion by validating the nanosecond fields to be subsecond
when parsing.
/* Timestamp */
if (d->query) {
if (m->has_query_time_sec && m->has_query_time_nsec) {
+ if (m->query_time_nsec >= NS_PER_SEC) {
+ CLEANUP(DNS_R_BADDNSTAP);
+ }
+
isc_time_set(&d->qtime, m->query_time_sec,
m->query_time_nsec);
}
} else {
if (m->has_response_time_sec && m->has_response_time_nsec) {
+ if (m->response_time_nsec >= NS_PER_SEC) {
+ CLEANUP(DNS_R_BADDNSTAP);
+ }
+
isc_time_set(&d->rtime, m->response_time_sec,
m->response_time_nsec);
}