ldns_rr *i_rr;
uint8_t *bitmap = LDNS_XMALLOC(uint8_t, 1);
- uint16_t bm_len = 1;
+ uint16_t bm_len = 0;
uint16_t i_type;
ldns_rr *nsec = NULL;
ldns_rr_owner(i_rr)) == 0) {
/* add type to bitmap */
i_type = ldns_rr_get_type(i_rr);
- if (i_type / 8 > bm_len) {
- bitmap = LDNS_XREALLOC(bitmap, uint8_t, i_type / 8);
+ if ((i_type / 8) + 1 > bm_len) {
+ bitmap = LDNS_XREALLOC(bitmap, uint8_t, (i_type / 8) + 1);
/* set to 0 */
for (; bm_len <= i_type / 8; bm_len++) {
bitmap[bm_len] = 0;
/* add NSEC and RRSIG anyway */
i_type = LDNS_RR_TYPE_RRSIG;
if (i_type / 8 > bm_len) {
- bitmap = LDNS_XREALLOC(bitmap, uint8_t, i_type / 8);
+ bitmap = LDNS_XREALLOC(bitmap, uint8_t, (i_type / 8) + 1);
/* set to 0 */
for (; bm_len <= i_type / 8; bm_len++) {
bitmap[bm_len] = 0;
i_type = LDNS_RR_TYPE_NSEC;
if (i_type / 8 > bm_len) {
- bitmap = LDNS_XREALLOC(bitmap, uint8_t, i_type / 8);
+ bitmap = LDNS_XREALLOC(bitmap, uint8_t, (i_type / 8) + 1);
/* set to 0 */
for (; bm_len <= i_type / 8; bm_len++) {
bitmap[bm_len] = 0;
}
for (current_service = 0;
- current_service < ldns_rdf_size(rdf) * 8;
+ current_service < ldns_rdf_size(rdf) * 7;
current_service++) {
if (ldns_get_bit(&(ldns_rdf_data(rdf)[1]), current_service)) {
service = getservbyport((int) ntohs(current_service),
ldns_rdf_deep_free(ldns_rdf *rd)
{
if (rd) {
- LDNS_FREE(rd->_data);
+ if (rd->_data) {
+ LDNS_FREE(rd->_data);
+ }
LDNS_FREE(rd);
}
}
/*origin = ldns_rdf_new_frm_str(LDNS_RDF_TYPE_DNAME, ".");*/
origin = ldns_rr_owner(orig_soa);
}
-
keys = ldns_key_list_new();
+
argi = 2;
while (argi < argc) {
keyfile = fopen(argv[argi], "r");
usage(stderr, argv[0]);
return 1;
}
-
signed_zone = ldns_zone_sign(orig_zone, keys);
if (signed_zone) {
- /*
- printf("SIGNED ZONE:\n");
- */
ldns_zone_print(stdout, signed_zone);
ldns_zone_deep_free(signed_zone);
} else {
ldns_zone_deep_free(orig_zone);
ldns_key_list_free(keys);
- ldns_rdf_deep_free(origin);
-
return 0;
}
serv_port = atoi(token);
}
if (serv_port / 8 > bm_len) {
- bitmap = LDNS_XREALLOC(bitmap, uint8_t, serv_port / 8);
+ bitmap = LDNS_XREALLOC(bitmap, uint8_t, (serv_port / 8) + 1);
/* set to zero to be sure */
for (; bm_len <= serv_port / 8; bm_len++) {
/*