+4599. [bug] Fix inconsistencies in inline signing time
+ comparison that were introduced with the
+ introduction of rdatasetheader->resign_lsb.
+ [RT #42112]
+
4598. [func] Update fuzzing code to (1) reply to a DNSKEY
query from named with appropriate DNSKEY used in
fuzzing; (2) patch the QTYPE correctly in
* context to use for the heap (which differs from the main
* database memory context in the case of a cache).
*/
- isc_mem_t * hmctx;
+ isc_mem_t *hmctx;
isc_heap_t **heaps;
/*
rdatasetheader_t *h1 = v1;
rdatasetheader_t *h2 = v2;
- if (h1->rdh_ttl < h2->rdh_ttl)
- return (ISC_TRUE);
- return (ISC_FALSE);
+ return (ISC_TF(h1->rdh_ttl < h2->rdh_ttl));
}
static isc_boolean_t
rdatasetheader_t *h1 = v1;
rdatasetheader_t *h2 = v2;
- if (h1->resign < h2->resign ||
- (h1->resign == h2->resign && h1->resign_lsb < h2->resign_lsb))
- return (ISC_TRUE);
- return (ISC_FALSE);
+ return (ISC_TF(h1->resign < h2->resign ||
+ (h1->resign == h2->resign &&
+ h1->resign_lsb < h2->resign_lsb)));
}
/*%
update_newheader(newheader, header);
if (loading && RESIGN(newheader) &&
RESIGN(header) &&
- header->resign < newheader->resign) {
+ resign_sooner(header, newheader))
+ {
newheader->resign = header->resign;
newheader->resign_lsb =
header->resign_lsb;
header->node = rbtnode;
header->node_is_relative = 0;
- if (rbtdb != NULL && RESIGN(header) && header->resign != 0) {
+ if (rbtdb != NULL && RESIGN(header) &&
+ (header->resign != 0 || header->resign_lsb != 0))
+ {
int idx = header->node->locknum;
result = isc_heap_insert(rbtdb->heaps[idx], header);
if (result != ISC_R_SUCCESS)
NODE_LOCK(&rbtdb->node_locks[header->node->locknum].lock,
isc_rwlocktype_write);
- oldresign = header->resign;
+ oldresign = (header->resign << 1) | header->resign_lsb;
header->resign = (isc_stdtime_t)(dns_time64_from32(resign) >> 1);
header->resign_lsb = resign & 0x1;
if (header->heap_index != 0) {
}
if (header == NULL)
header = this;
- else if (isc_serial_lt(this->resign, header->resign)) {
+ else if (resign_sooner(this, header)) {
locknum = header->node->locknum;
NODE_UNLOCK(&rbtdb->node_locks[locknum].lock,
isc_rwlocktype_read);