diff --git a/src/dnssec.c b/src/dnssec.c index 3656a54c..1ab1d01c 100644 --- a/src/dnssec.c +++ b/src/dnssec.c @@ -701,10 +701,8 @@ static int bitmap_has_type(priv_getdns_rdf_iter *bitmap, uint16_t rr_type) uint8_t window = rr_type >> 8; uint8_t subtype = rr_type & 0xFF; - if (!bitmap) + if (!bitmap || (dptr = bitmap->pos) == (dend = bitmap->nxt)) return 0; - dptr = bitmap->pos; - dend = bitmap->nxt; /* Type Bitmap = ( Window Block # | Bitmap Length | Bitmap ) + * dptr[0] dptr[1] dptr[2:] diff --git a/src/rr-iter.c b/src/rr-iter.c index 6b68ac1c..a950483b 100644 --- a/src/rr-iter.c +++ b/src/rr-iter.c @@ -252,7 +252,7 @@ rdf_iter_find_nxt(priv_getdns_rdf_iter *i) if (!(i->nxt = i->rdd_pos->special->rdf_end( i->pkt, i->pkt_end, i->pos))) i->nxt = i->end; - } else + } else /* RDF is for remaining data */ i->nxt = i->end; if (i->nxt <= i->end) @@ -304,8 +304,8 @@ priv_getdns_rdf_iter_next(priv_getdns_rdf_iter *i) return NULL; i->rdd_pos += 1; - if ((i->pos = i->nxt) >= i->end) - goto done; /* Out of rdata */ + if ((i->pos = i->nxt) > i->end) + goto done; /* Overflow */ if (i->rdd_pos >= i->rdd_end && !(i->rdd_pos = i->rdd_repeat)) goto done; /* Remaining rdata, but out of definitions! */ if (i->rdd_pos->type == GETDNS_RDF_REPEAT)