aboutsummaryrefslogtreecommitdiff
path: root/contrib/ldns/drill/drill_util.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ldns/drill/drill_util.c')
-rw-r--r--contrib/ldns/drill/drill_util.c32
1 files changed, 19 insertions, 13 deletions
diff --git a/contrib/ldns/drill/drill_util.c b/contrib/ldns/drill/drill_util.c
index 98d88e7942da..db0433e77e1d 100644
--- a/contrib/ldns/drill/drill_util.c
+++ b/contrib/ldns/drill/drill_util.c
@@ -13,14 +13,14 @@
#include <errno.h>
-static size_t
+static int
read_line(FILE *input, char *line, size_t len)
{
- size_t i;
+ int i;
char c;
- for (i = 0; i < len-1; i++) {
- c = getc(input);
+ for (i = 0; i < (int)len-1; i++) {
+ c = (char)getc(input);
if (c == EOF) {
return -1;
} else if (c != '\n') {
@@ -35,20 +35,22 @@ read_line(FILE *input, char *line, size_t len)
/* key_list must be initialized with ldns_rr_list_new() */
ldns_status
-read_key_file(const char *filename, ldns_rr_list *key_list)
+read_key_file(const char *filename, ldns_rr_list *key_list, bool silently)
{
int line_len = 0;
int line_nr = 0;
int key_count = 0;
- char line[LDNS_MAX_PACKETLEN];
+ char line[LDNS_MAX_LINELEN];
ldns_status status;
FILE *input_file;
ldns_rr *rr;
input_file = fopen(filename, "r");
if (!input_file) {
- fprintf(stderr, "Error opening %s: %s\n",
- filename, strerror(errno));
+ if (! silently) {
+ fprintf(stderr, "Error opening %s: %s\n",
+ filename, strerror(errno));
+ }
return LDNS_STATUS_ERR;
}
while (line_len >= 0) {
@@ -57,10 +59,13 @@ read_key_file(const char *filename, ldns_rr_list *key_list)
if (line_len > 0 && line[0] != ';') {
status = ldns_rr_new_frm_str(&rr, line, 0, NULL, NULL);
if (status != LDNS_STATUS_OK) {
- fprintf(stderr,
- "Error parsing DNSKEY RR in line %d: %s\n",
- line_nr,
- ldns_get_errorstr_by_id(status));
+ if (! silently) {
+ fprintf(stderr,
+ "Error parsing DNSKEY RR "
+ "in line %d: %s\n", line_nr,
+ ldns_get_errorstr_by_id(status)
+ );
+ }
} else if (ldns_rr_get_type(rr) == LDNS_RR_TYPE_DNSKEY ||
ldns_rr_get_type(rr) == LDNS_RR_TYPE_DS) {
ldns_rr_list_push_rr(key_list, rr);
@@ -70,7 +75,7 @@ read_key_file(const char *filename, ldns_rr_list *key_list)
}
}
}
- printf(";; Number of trusted keys: %d\n", key_count);
+ fclose(input_file);
if (key_count > 0) {
return LDNS_STATUS_OK;
} else {
@@ -132,6 +137,7 @@ print_ds_of_keys(ldns_pkt *p)
ds = ldns_key_rr2ds(ldns_rr_list_rr(keys, i), LDNS_SHA256);
local_print_ds(stdout, "; sha256: ", ds);
}
+ ldns_rr_list_deep_free(keys);
}
}