Esempio n. 1
0
int
nsec3_has_type(struct ub_packed_rrset_key* rrset, int r, uint16_t type)
{
	uint8_t* bitmap;
	size_t bitlen, skiplen;
        struct packed_rrset_data* d = (struct packed_rrset_data*)
	        rrset->entry.data;
	log_assert(d && r < (int)d->count);
	skiplen = 2+4;
	/* skip salt */
	if(d->rr_len[r] < skiplen+1)
		return 0; /* malformed, too short */
	skiplen += 1+(size_t)d->rr_data[r][skiplen]; 
	/* skip next hashed owner */
	if(d->rr_len[r] < skiplen+1)
		return 0; /* malformed, too short */
	skiplen += 1+(size_t)d->rr_data[r][skiplen]; 
	if(d->rr_len[r] < skiplen)
		return 0; /* malformed, too short */
	bitlen = d->rr_len[r] - skiplen;
	bitmap = d->rr_data[r]+skiplen;
	return nsecbitmap_has_type_rdata(bitmap, bitlen, type);
}
/** helper for unittest of NSEC routines */
static int
unitest_nsec_has_type_rdata(char* bitmap, size_t len, uint16_t type)
{
	return nsecbitmap_has_type_rdata((uint8_t*)bitmap, len, type);
}