From: Jelte Jansen Date: Wed, 24 Aug 2005 12:46:40 +0000 (+0000) Subject: memory stuff X-Git-Tag: release-1.0.0~248 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9059916eac336a5566ffaa3d7f01bdb6da69b85f;p=thirdparty%2Fldns.git memory stuff --- diff --git a/dnssec.c b/dnssec.c index 3f17e7d1..764dfa32 100644 --- a/dnssec.c +++ b/dnssec.c @@ -1237,7 +1237,7 @@ ldns_create_nsec(ldns_rdf *cur_owner, ldns_rdf *next_owner, ldns_rr_list *rrs) 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; @@ -1262,8 +1262,8 @@ ldns_create_nsec(ldns_rdf *cur_owner, ldns_rdf *next_owner, ldns_rr_list *rrs) 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; @@ -1275,7 +1275,7 @@ ldns_create_nsec(ldns_rdf *cur_owner, ldns_rdf *next_owner, ldns_rr_list *rrs) /* 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; @@ -1285,7 +1285,7 @@ ldns_create_nsec(ldns_rdf *cur_owner, ldns_rdf *next_owner, ldns_rr_list *rrs) 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; diff --git a/host2str.c b/host2str.c index ac65f2a7..8f6d307b 100644 --- a/host2str.c +++ b/host2str.c @@ -428,7 +428,7 @@ ldns_rdf2buffer_str_wks(ldns_buffer *output, ldns_rdf *rdf) } 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), diff --git a/rdata.c b/rdata.c index 9e13cfcf..b2dad32a 100644 --- a/rdata.c +++ b/rdata.c @@ -284,7 +284,9 @@ void ldns_rdf_deep_free(ldns_rdf *rd) { if (rd) { - LDNS_FREE(rd->_data); + if (rd->_data) { + LDNS_FREE(rd->_data); + } LDNS_FREE(rd); } } diff --git a/signzone.c b/signzone.c index b4c793dc..6989e7f7 100644 --- a/signzone.c +++ b/signzone.c @@ -82,10 +82,10 @@ struct tm tm; /*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"); @@ -126,14 +126,10 @@ strftime(date_buf, 15, "%Y%m%d%H%M%S", &tm); 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 { @@ -142,7 +138,5 @@ strftime(date_buf, 15, "%Y%m%d%H%M%S", &tm); ldns_zone_deep_free(orig_zone); ldns_key_list_free(keys); - ldns_rdf_deep_free(origin); - return 0; } diff --git a/str2host.c b/str2host.c index d39d50c5..8476c161 100644 --- a/str2host.c +++ b/str2host.c @@ -804,7 +804,7 @@ ldns_str2rdf_wks(ldns_rdf **rd, const char *str) 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++) { /*