{
uint8_t T;
/* See RFC2536 */
- *size = BN_num_bytes(k->g);
+ *size = (uint16_t)BN_num_bytes(k->g);
T = (*size - 64) / 8;
memcpy(data, &T, 1);
}
/**size = 64 + (T * 8); */
- data[0] = T;
+ data[0] = (unsigned char)T;
BN_bn2bin(k->q, data + 1 ); /* 20 octects */
BN_bn2bin(k->p, data + 21 ); /* offset octects */
BN_bn2bin(k->g, data + 21 + *size); /* offset octets */
ssize_t
ldns_bget_keyword_data(ldns_buffer *b, const char *keyword, const char *k_del, char *data, const char *d_del);
+/* remove comments from a string. Comment = ';' until \n
+ * replace ; until \n with spaces
+ * return the new string
+ */
+char * ldns_str_remove_comment(char *str);
+
#endif /* _PARSE_H_ */
char *type;
char *rdata;
char *rd;
- int c;
+ char *no_comment_str;
+ ssize_t c;
ldns_rdf *r;
uint16_t r_cnt;
ttl_val = 0;
clas_val = 0;
- ldns_buffer_new_frm_data(rr_buf, (char*)str, strlen(str));
+ no_comment_str = ldns_str_remove_comment((char*)str);
+
+ ldns_buffer_new_frm_data(rr_buf, no_comment_str, strlen(no_comment_str));
/* split the rr in its parts -1 signals trouble */
if (ldns_bget_token(rr_buf, owner, "\t\n ", MAX_DOMAINLEN) == -1) {
FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
FREE(rd_buf);
- /* ldns_buffer_free(rr_buf); */
+ ldns_buffer_free(rr_buf);
return NULL;
}
if (ldns_bget_token(rr_buf, ttl, "\t\n ", 21) == -1) {
FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
FREE(rd_buf);
+ ldns_buffer_free(rr_buf);
return NULL;
}
ttl_val = ldns_str2period(ttl, &endptr); /* i'm not using endptr */
clas_val = ldns_get_rr_class_by_name(ttl);
} else {
if (ldns_bget_token(rr_buf, clas, "\t\n ", 11) == -1) {
-#if 0
FREE(owner); FREE(ttl); FREE(clas); FREE(rdata);FREE(rd);
FREE(rd_buf);
ldns_buffer_free(rr_buf);
-#endif
return NULL;
}
clas_val = ldns_get_rr_class_by_name(clas);
if (ldns_bget_token(rr_buf, rdata, "\0", MAX_PACKETLEN) == -1) {
FREE(owner); FREE(ttl); FREE(clas); FREE(type);FREE(rd);
FREE(rd_buf);
- /* ldns_buffer_free(rr_buf); */
+ ldns_buffer_free(rr_buf);
return NULL;
}
ldns_buffer_new_frm_data(
r = ldns_rdf_new_frm_str(
ldns_rr_descriptor_field_type(desc, r_cnt),
rd);
-#if 0
- if (!r || (r_cnt > r_max)) {
- FREE(rdata);
- return NULL;
- }
-#endif
-
ldns_rr_push_rdf(new, r);
r_cnt++;
}
}
-#if 0
- /* the last one - in case of EOF of the rdata */
- r = ldns_rdf_new_frm_str(
- ldns_rr_descriptor_field_type(desc, r_cnt),
- rd);
- if (!r) {
- FREE(rdata);
- return NULL;
- } else {
- ldns_rr_push_rdf(new, r);
- }
FREE(rdata);
-#endif
return new;
}
printf("\n");
soa_string1 = "miek.nl. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. ( \
-2002120700 \n\
+2002120700 ; hallo ik ben miek\n\
21600 \n\
7200 \n\
604800 \n\
3600 \n\
)";
soa_string2 = "miek.nl. 3600 IN SOA elektron.atoom.net. miekg.atoom.net. \
-2002120700 \n\
-21600 \n\
-7200 \n\
-604800 \n\
-3600";
+2002120700 ; serial \n\
+21600 ; more shit\n\
+7200 ; ahh retry \n\
+604800 ; meaningless number to annoy me\n\
+3600 ; negative caching";
rr = ldns_rr_new_frm_str(soa_string1);
ldns_rr_print(stdout, rr);