synced all calls to MALLOC and FREE for runtest[1-4].
return;
}
+/*
if (!buffer->_fixed) {
+*/
FREE(buffer->_data);
+/*
}
+*/
FREE(buffer);
}
{
uint16_t i;
ldns_status status = LDNS_STATUS_OK;
+ char *tmp;
if (ldns_buffer_status_ok(output)) {
status = ldns_pktheader2buffer_str(output, pkt);
/* add some futher fields */
ldns_buffer_printf(output, ";; Query time: %d msec\n", ldns_pkt_querytime(pkt));
if (ldns_pkt_answerfrom(pkt)) {
- ldns_buffer_printf(output, ";; SERVER: %s\n", ldns_rdf2str(ldns_pkt_answerfrom(pkt)));
+ tmp = ldns_rdf2str(ldns_pkt_answerfrom(pkt));
+ ldns_buffer_printf(output, ";; SERVER: %s\n", tmp);
+ FREE(tmp);
}
if (ldns_pkt_when(pkt)) {
/* \n included in when buffer, see ctime(3) */
tmp_str = ldns_buffer_export(buffer);
str = XMALLOC(char, strlen(tmp_str) + 1);
+/*
+if(str == 0x80530f0){
+memcpy(0, "a", 1);
+}
+*/
memcpy(str, tmp_str, strlen(tmp_str) + 1);
return str;
} else {
fprintf(output, "Unable to convert rdf to string\n");
}
+ FREE(str);
}
void
ldns_pkt2wire(ldns_pkt *packet, size_t *result_size)
{
ldns_buffer *buffer = ldns_buffer_new(MAX_PACKETLEN);
+ uint8_t *result2 = NULL;
uint8_t *result = NULL;
*result_size = 0;
if (ldns_pkt2buffer_wire(buffer, packet) == LDNS_STATUS_OK) {
} else {
/* TODO: what about the error? */
}
+
+ if (result) {
+ result2 = XMALLOC(uint8_t, ldns_buffer_position(buffer));
+ memcpy(result2, result, ldns_buffer_position(buffer));
+ }
+
ldns_buffer_free(buffer);
- return result;
+ return result2;
}
ns_len = (socklen_t)sizeof(struct sockaddr_in6);
break;
}
-
+
gettimeofday(&tv_s, NULL);
/* query */
if (1 == ldns_resolver_usevc(r)) {
/* udp here, please */
reply = ldns_send_udp(qb, ns, ns_len);
}
+ FREE(ns);
gettimeofday(&tv_e, NULL);
if (reply) {
if (ldns_wire2pkt(&answer_pkt, answer, (size_t) bytes) !=
LDNS_STATUS_OK) {
+ FREE(answer);
return NULL;
} else {
ldns_pkt_set_size(answer_pkt, (size_t) bytes);
+ FREE(answer);
return answer_pkt;
}
}
{
FREE(packet->_header);
if (packet->_question) {
- /*ldns_rr_list_destroy(packet->_question);*/
+ ldns_rr_list_free(packet->_question);
}
if (packet->_answer) {
- /*ldns_rr_list_destroy(packet->_answer);*/
- FREE(packet->_answer);
+ ldns_rr_list_free(packet->_answer);
}
if (packet->_authority) {
- /*ldns_rr_list_destroy(packet->_authority);*/
- FREE(packet->_authority);
+ ldns_rr_list_free(packet->_authority);
}
if (packet->_additional) {
- /*ldns_rr_list_destroy(packet->_additional);*/
- FREE(packet->_authority);
+ ldns_rr_list_free(packet->_additional);
}
FREE(packet);
}
void
ldns_rdf_free(ldns_rdf *rd)
{
- FREE(rd);
+ if (rd) {
+ if (rd->_data) {
+ FREE(rd->_data);
+ }
+ FREE(rd);
+ }
}
/**
return r;
}
+/**
+ * Frees the allocated space for this resolver and all it's data
+ *
+ * \param res resolver to free
+ */
+void
+ldns_resolver_free(ldns_resolver *res)
+{
+ size_t i;
+/*
+ for (i = 0; i < res->_nameserver_count; i++) {
+ ldns_rdf_free(res->_nameservers[i]);
+ }
+ for (i = 0; i < res->_searchlist_count; i++) {
+ ldns_rdf_free(res->_searchlist[i]);
+ }
+*/
+ FREE(res->_searchlist);
+ FREE(res->_nameservers);
+ FREE(res);
+}
+
/**
* Send the query
* \param[in] *r operate using this resolver
}
/* prepare a question pkt from the parameters
* and then send this */
- query_pkt = ldns_pkt_query_new(name, type, class, flags);
+ query_pkt = ldns_pkt_query_new(ldns_rdf_clone(name), type, class, flags);
if (!query_pkt) {
printf("Failed to generate pkt\n");
return NULL;
/* return NULL on error */
answer_pkt = ldns_send(r, query_pkt);
+
+ ldns_pkt_free(query_pkt);
return answer_pkt;
}
ldns_rr_free(ldns_rr *rr)
{
uint16_t i;
+ if (ldns_rr_owner(rr)) {
+ ldns_rdf_free(ldns_rr_owner(rr));
+ }
for (i = 0; i < ldns_rr_rd_count(rr); i++) {
ldns_rdf_free(ldns_rr_rdf(rr, i));
}
ldns_rdf *cat_test1;
ldns_rdf *cat_test2;
ldns_rdf *concat;
-
+ char *str;
+
buf = ldns_buffer_new(10); /* alloc away! */
if (!buf) {
printf("Nooooo\n");
}
printf("Setting 15242\n");
+
if (ldns_str2rdf_int16(&rdata, "15242") != LDNS_STATUS_OK) {
printf("_short: ah man, shit hit the fan\n");
}
(void) ldns_rdf2buffer_str_int16(buf, rdata);
- fprintf(stderr, "%s\n", buffer2str(buf));
+ str = buffer2str(buf);
+ fprintf(stderr, "%s\n", str);
+
+ FREE(str);
+ ldns_buffer_free(buf);
+ ldns_rdf_free(rdata);
/* test the label counter */
cnt_test = ldns_dname_new_frm_str("miek.nl.");
printf("Labels miek.nl. %d\n", ldns_rdf_dname_label_count(cnt_test));
+ ldns_rdf_free(cnt_test);
cnt_test = ldns_dname_new_frm_str("miek.nl");
printf("Labels miek.nl %d\n", ldns_rdf_dname_label_count(cnt_test));
+ ldns_rdf_free(cnt_test);
cnt_test = ldns_dname_new_frm_str("miek");
printf("Labels miek %d\n", ldns_rdf_dname_label_count(cnt_test));
+ ldns_rdf_free(cnt_test);
/* this errors
cnt_test = ldns_dname_new_frm_str(".");
cnt_test = ldns_dname_new_frm_str("nl");
printf("Labels nl %d\n", ldns_rdf_dname_label_count(cnt_test));
+ ldns_rdf_free(cnt_test);
/* concat tests */
concat = ldns_dname_concat(cat_test1, cat_test2);
ldns_rdf_print(stdout, concat);
+
printf(" [%d]\n", ldns_rdf_size(concat));
printf("Labels nl %d\n", ldns_rdf_dname_label_count(concat));
+
+ ldns_rdf_free(cat_test1);
+ ldns_rdf_free(cat_test2);
+ ldns_rdf_free(concat);
}
if (ldns_str2rdf_int16(&bla, "15242") != LDNS_STATUS_OK) {
printf("_int16: ah man, shit hit the fan\n");
}
+ ldns_rdf_free(bla);
+
/* %Y%m%d%H%M%S */
if (ldns_str2rdf_time(&bla, "20041222134100") != LDNS_STATUS_OK) {
printf("_time: ah man, shit hit the fan\n");
}
+ ldns_rdf_free(bla);
printf("succes\n");
doit();
wirelen = (size_t) hexbufpos;
}
+ FREE(hexbuf);
+
status = ldns_wire2pkt(&pkt, wire, wirelen);
+ FREE(wire);
+
if (status == LDNS_STATUS_OK) {
return pkt;
} else {
uint8_t *target_buf;
size_t len;
uint16_t i;
+ char *str;
if (argc == 2) {
file = argv[1];
pkt = file2pkt(file);
if (pkt) {
printf("packet:\n");
- printf("%s", ldns_pkt2str(pkt));
+ str = ldns_pkt2str(pkt);
+ printf("%s", str);
+ FREE(str);
} else {
printf("\n");
}
}
printf("\n\n");
+ ldns_pkt_free(pkt);
+ FREE(target_buf);
return 0;
}
fprintf(stdout, "www.\n");
(void) ldns_str2rdf_dname(&rd, "www.");
+ ldns_rdf_free(rd);
+
fprintf(stdout, "www.miek.nl\n");
(void) ldns_str2rdf_dname(&rd, "www.miek.nl");
+ ldns_rdf_free(rd);
+
fprintf(stdout, "www\n");
(void) ldns_str2rdf_dname(&rd, "www");
+ ldns_rdf_free(rd);
+
fprintf(stdout, "www.miek.nl..\n");
(void) ldns_str2rdf_dname(&rd, "www.miek.nl..");
+
+ ldns_rdf_free(rd);
return 0;
}
if (!pkt) {
printf("error pkt sending\n");
- return 1;
- }
+ } else {
/* print the resulting pkt to stdout */
- ldns_pkt_print(stdout, pkt);
+/*
+ ldns_pkt_print(stdout, pkt);
+*/
+ ldns_pkt_free(pkt);
+ }
+
+ ldns_rdf_free(qname);
+ ldns_rdf_free(default_dom);
+ ldns_rdf_free(nameserver);
+ ldns_resolver_free(res);
return 0;
}
/* print the resulting pkt to stdout */
ldns_pkt_print(stdout, pkt);
+ ldns_resolver_free(res);
return 0;
}
return LDNS_STATUS_INT_EXP;
} else {
*rd = ldns_rdf_new_frm_data(sizeof(uint16_t), LDNS_RDF_TYPE_INT16, (uint8_t*)r);
+ FREE(r);
return LDNS_STATUS_OK;
}
}
l = htonl(timegm(&tm));
memcpy(r, &l, sizeof(uint32_t));
*rd = ldns_rdf_new_frm_data(sizeof(uint32_t), LDNS_RDF_TYPE_TIME, (uint8_t*)r);
+ FREE(r);
return LDNS_STATUS_OK;
}
}
uint8_t *s,*p,*q, *pq, val, label_len;
uint8_t buf[MAX_DOMAINLEN + 1];
+ *d = NULL;
len = strlen((char*)str);
if (len > MAX_DOMAINLEN) {