From: Miek Gieben Date: Tue, 1 Mar 2005 14:39:38 +0000 (+0000) Subject: print signatures times correctly X-Git-Tag: release-0.50~322 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e7095fb6d7f3d15046d1ed22319a7a3a690abea9;p=thirdparty%2Fldns.git print signatures times correctly --- diff --git a/host2str.c b/host2str.c index 964537cf..e0918f03 100644 --- a/host2str.c +++ b/host2str.c @@ -156,8 +156,20 @@ ldns_rdf2buffer_str_int32(ldns_buffer *output, ldns_rdf *rdf) ldns_status ldns_rdf2buffer_str_time(ldns_buffer *output, ldns_rdf *rdf) { - uint32_t data = read_uint32(ldns_rdf_data(rdf)); - ldns_buffer_printf(output, "%lu", (unsigned long) data); + uint32_t data; + struct tm *tm; + time_t t; + char *st; + + data = read_uint32(ldns_rdf_data(rdf)); + + t = (time_t) data; + tm = gmtime(&t); + st = XMALLOC(char, 15); + + (void)strftime(st, 15, "%Y%m%d%H%M%S", tm); + ldns_buffer_printf(output, "%s", st); + FREE(st); return ldns_buffer_status(output); } diff --git a/ldns/rdata.h b/ldns/rdata.h index e734cdc0..7e3a96ef 100644 --- a/ldns/rdata.h +++ b/ldns/rdata.h @@ -60,9 +60,9 @@ enum ldns_enum_rdf_type LDNS_RDF_TYPE_UNKNOWN, /** time */ LDNS_RDF_TYPE_TIME, - /** tsig time 48 bits */ /** period */ LDNS_RDF_TYPE_PERIOD, + /** tsig time 48 bits */ LDNS_RDF_TYPE_TSIGTIME, /** protocol and port bitmaps */ LDNS_RDF_TYPE_SERVICE, diff --git a/rr.c b/rr.c index 1de1bc8e..602a6848 100644 --- a/rr.c +++ b/rr.c @@ -171,9 +171,10 @@ ldns_rr_new_frm_str(const char *str) r = ldns_rdf_new_frm_str( ldns_rr_descriptor_field_type(desc, r_cnt), rd); -#ifdef DEBUG + printf("rd str [%s] %d\n", rd, r_cnt); -#endif + printf("type %d\n",ldns_rr_descriptor_field_type(desc, r_cnt)); + if (!r) { printf("rdf conversion mismatch\n"); return NULL; @@ -645,8 +646,8 @@ static const ldns_rdf_type type_nsap_ptr_wireformat[] = { LDNS_RDF_TYPE_STR }; static const ldns_rdf_type type_sig_wireformat[] = { - LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_TIME, - LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT16, + LDNS_RDF_TYPE_TYPE, LDNS_RDF_TYPE_ALG, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT32, + LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_B64 }; static const ldns_rdf_type type_key_wireformat[] = { @@ -705,7 +706,8 @@ static const ldns_rdf_type type_ipseckey_wireformat[] = { }; static const ldns_rdf_type type_rrsig_wireformat[] = { LDNS_RDF_TYPE_TYPE, LDNS_RDF_TYPE_ALG, LDNS_RDF_TYPE_INT8, LDNS_RDF_TYPE_INT32, - LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT32, LDNS_RDF_TYPE_INT16, LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_B64 + LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_TIME, LDNS_RDF_TYPE_INT16, + LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_B64 }; static const ldns_rdf_type type_nsec_wireformat[] = { LDNS_RDF_TYPE_DNAME, LDNS_RDF_TYPE_NSEC diff --git a/run-test13.c b/run-test13.c index 40c8546f..9a327eee 100644 --- a/run-test13.c +++ b/run-test13.c @@ -32,17 +32,23 @@ main(int argc, char **argv) if (RR) { ldns_rr_print(stdout, RR); printf("\n"); + } else { + abort(); } RR = ldns_rr_new_frm_str("miek.nl. 3600 IN MX (\n\t10\n\telektron.atoom.net.\n\t)"); if (RR) { ldns_rr_print(stdout, RR); printf("\n"); + } else { + abort(); } RR = ldns_rr_new_frm_str(" nlnetlabs.nl. 84236 IN DNSKEY 257 3 5 AQPzzTWMz8qSWIQlfRnPckx2BiVmkVN6LPupO3mbz7FhLSnm26n6iG9NLby97Ji453aWZY3M5/xJBSOS2vWtco2t8C0+xeO1bc/d6ZTy32DHchpW6rDH1vp86Ll+ha0tmwyy9QP7y2bVw5zSbFCrefk8qCUBgfHm9bHzMG1UBYtEIQ=="); if (RR) { ldns_rr_print(stdout, RR); printf("\n"); + } else { + abort(); } printf("\n*** Okay, now the real dnssec testing ***\n\n"); @@ -58,6 +64,8 @@ main(int argc, char **argv) if (rrset) { ldns_rr_list_print(stdout,rrset); printf("\n"); + } else { + abort(); } ldns_rr_set_push_rr(rrset2, ldns_rr_new_frm_str("www.nlnetlabs.nl. 86354 IN A 213.154.224.2")); ldns_rr_list_print(stdout,rrset2); @@ -67,6 +75,8 @@ main(int argc, char **argv) if (sig) { ldns_rr_print(stdout,sig); printf("\n"); + } else { + abort(); } /* try to verify some things */ diff --git a/str2host.c b/str2host.c index 369f3385..e0a9de4f 100644 --- a/str2host.c +++ b/str2host.c @@ -67,13 +67,24 @@ ldns_str2rdf_time(ldns_rdf **rd, const char *time) uint16_t *r = NULL; struct tm tm; uint32_t l; + char *end; /* Try to scan the time... */ r = (uint16_t*)MALLOC(uint32_t); if((char*)strptime(time, "%Y%m%d%H%M%S", &tm) == NULL) { - FREE(r); - return LDNS_STATUS_ERR; + /* this means it is the date in seconds after 1970 */ + l = htonl((uint32_t)strtol((char*)time, &end, 0)); + if(*end != 0) { + /* also not */ + FREE(r); + return LDNS_STATUS_ERR; + } else { + memcpy(r, &l, sizeof(uint32_t)); + *rd = ldns_rdf_new_frm_data( + LDNS_RDF_TYPE_TIME, sizeof(uint32_t), r); + return LDNS_STATUS_OK; + } } else { l = htonl(timegm(&tm)); memcpy(r, &l, sizeof(uint32_t));