From: Jelte Jansen Date: Tue, 5 Dec 2006 13:51:27 +0000 (+0000) Subject: small fix in parsing CERT records X-Git-Tag: release-1.2.0~122 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bbf34c24ea2679b5aed78e51038bf7046089c62c;p=thirdparty%2Fldns.git small fix in parsing CERT records small fix in the reading of key-singing keys and ldns-signzone small fix when reading bad zone file --- diff --git a/examples/ldns-signzone.c b/examples/ldns-signzone.c index 4e0590a6..b7c9722c 100644 --- a/examples/ldns-signzone.c +++ b/examples/ldns-signzone.c @@ -256,6 +256,7 @@ main(int argc, char *argv[]) LDNS_STATUS_OK) { ldns_key_set_pubkey_owner(key, ldns_rdf_clone(ldns_rr_owner(pubkey))); ldns_key_set_flags(key, ldns_rdf2native_int16(ldns_rr_rdf(pubkey, 0))); + ldns_key_set_keytag(key, ldns_calc_keytag(pubkey)); } ldns_key_list_push_key(keys, key); ldns_zone_push_rr(orig_zone, ldns_rr_clone(pubkey)); diff --git a/keys.c b/keys.c index 617baf8b..89fc709b 100644 --- a/keys.c +++ b/keys.c @@ -140,7 +140,6 @@ ldns_key_new_frm_fp_l(ldns_key **key, FILE *fp, int *line_nr) } key_rr = ldns_key2rr(k); - ldns_key_set_keytag(k, ldns_calc_keytag(key_rr)); ldns_rr_free(key_rr); if (key) { diff --git a/rdata.c b/rdata.c index 4a3bac7b..126b210a 100644 --- a/rdata.c +++ b/rdata.c @@ -298,7 +298,7 @@ ldns_rdf_new_frm_str(ldns_rdf_type type, const char *str) status = LDNS_STATUS_ERR; break; } - if (LDNS_STATUS_OK != status) { + if (LDNS_STATUS_OK != status || !rdf) { return NULL; } else { ldns_rdf_set_type(rdf, type); diff --git a/rr.c b/rr.c index 9949d4e7..692f438f 100644 --- a/rr.c +++ b/rr.c @@ -498,10 +498,6 @@ ldns_rr_new_frm_fp_l(ldns_rr **newrr, FILE *fp, uint16_t *default_ttl, ldns_rdf return LDNS_STATUS_MEM_ERR; } - if (line_nr) { - *line_nr = *line_nr + 1; - } - /* read an entire line in from the file */ if ((size = ldns_fget_token_l(fp, line, LDNS_PARSE_SKIP_SPACE, LDNS_MAX_LINELEN, line_nr)) == -1) { LDNS_FREE(line); diff --git a/str2host.c b/str2host.c index 10031207..8c45498a 100644 --- a/str2host.c +++ b/str2host.c @@ -588,25 +588,26 @@ ldns_str2rdf_cert_alg(ldns_rdf **rd, const char *str) { ldns_lookup_table *lt; ldns_status st; - uint8_t id = 0; + uint8_t idd[2]; lt = ldns_lookup_by_name(ldns_cert_algorithms, str); st = LDNS_STATUS_OK; if (lt) { - id = (uint8_t) lt->id; - /* it was given as a integer */ + ldns_write_uint16(idd, (uint16_t) lt->id); *rd = ldns_rdf_new_frm_data( - LDNS_RDF_TYPE_INT8, sizeof(uint8_t), &id); + LDNS_RDF_TYPE_INT16, sizeof(uint16_t), idd); if (!*rd) { st = LDNS_STATUS_ERR; } } else { /* try as-is (a number) */ - st = ldns_str2rdf_int8(rd, str); - } - if (ldns_rdf2native_int8(*rd) == 0) { - st = LDNS_STATUS_CERT_BAD_ALGORITHM; + st = ldns_str2rdf_int16(rd, str); + if (st = LDNS_STATUS_OK && + ldns_rdf2native_int16(*rd) == 0) { + st = LDNS_STATUS_CERT_BAD_ALGORITHM; + } } + return st; }