From 4fc4813eb3bb3c4b0fbcb4b3052ef162d2a1ca04 Mon Sep 17 00:00:00 2001 From: Brian Wellington Date: Mon, 14 Aug 2000 04:43:17 +0000 Subject: [PATCH] Remove all non-threadsafe functions (in the non-threaded programs). --- bin/dnssec/dnssec-keygen.c | 18 +++-- bin/dnssec/dnssec-makekeyset.c | 37 +++++---- bin/dnssec/dnssec-signkey.c | 38 ++++++---- bin/dnssec/dnssec-signzone.c | 135 +++++++++++++++++++-------------- bin/dnssec/dnssectool.c | 66 ++++++---------- bin/dnssec/dnssectool.h | 23 +++--- 6 files changed, 171 insertions(+), 146 deletions(-) diff --git a/bin/dnssec/dnssec-keygen.c b/bin/dnssec/dnssec-keygen.c index 17d72a1789..9273e783d2 100644 --- a/bin/dnssec/dnssec-keygen.c +++ b/bin/dnssec/dnssec-keygen.c @@ -17,7 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-keygen.c,v 1.37 2000/08/01 01:11:21 tale Exp $ */ +/* $Id: dnssec-keygen.c,v 1.38 2000/08/14 04:43:12 bwelling Exp $ */ #include @@ -329,9 +329,12 @@ main(int argc, char **argv) { isc_entropy_stopcallbacksources(ectx); if (ret != ISC_R_SUCCESS) { + char namestr[DNS_NAME_FORMATSIZE]; + char algstr[ALG_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); + alg_format(alg, algstr, sizeof algstr); fatal("failed to generate key %s/%s: %s\n", - nametostr(name), algtostr(alg), - dst_result_totext(ret)); + namestr, algstr, dst_result_totext(ret)); exit(-1); } @@ -369,9 +372,12 @@ main(int argc, char **argv) { "already exists"); ret = dst_key_tofile(key, DST_TYPE_PUBLIC | DST_TYPE_PRIVATE, NULL); - if (ret != ISC_R_SUCCESS) - fatal("failed to write key %s/%s/%d: %s\n", nametostr(name), - algtostr(alg), dst_key_id(key), isc_result_totext(ret)); + if (ret != ISC_R_SUCCESS) { + char keystr[KEY_FORMATSIZE]; + key_format(key, keystr, sizeof keystr); + fatal("failed to write key %s: %s\n", keystr, + isc_result_totext(ret)); + } isc_buffer_clear(&buf); ret = dst_key_buildfilename(key, 0, NULL, &buf); diff --git a/bin/dnssec/dnssec-makekeyset.c b/bin/dnssec/dnssec-makekeyset.c index c20b0d138b..b5b29d61aa 100644 --- a/bin/dnssec/dnssec-makekeyset.c +++ b/bin/dnssec/dnssec-makekeyset.c @@ -17,7 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-makekeyset.c,v 1.32 2000/08/10 22:08:19 bwelling Exp $ */ +/* $Id: dnssec-makekeyset.c,v 1.33 2000/08/14 04:43:13 bwelling Exp $ */ #include @@ -255,9 +255,7 @@ main(int argc, char *argv[]) { if (result != ISC_R_SUCCESS) fatal("error loading key from %s", argv[i]); - strncpy(namestr, nametostr(dst_key_name(key)), - sizeof(namestr) - 1); - namestr[sizeof(namestr) - 1] = 0; + dns_name_format(dst_key_name(key), namestr, sizeof namestr); if (savedname == NULL) { savedname = isc_mem_get(mctx, sizeof(dns_name_t)); @@ -269,10 +267,13 @@ main(int argc, char *argv[]) { if (result != ISC_R_SUCCESS) fatal("out of memory"); } else { + char savednamestr[DNS_NAME_FORMATSIZE]; + dns_name_format(savedname, savednamestr, + sizeof savednamestr); if (!dns_name_equal(savedname, dst_key_name(key)) != 0) fatal("all keys must have the same owner - %s " "and %s do not match", - nametostr(savedname), namestr); + savednamestr, namestr); } if (output == NULL) { output = isc_mem_allocate(mctx, @@ -356,12 +357,12 @@ main(int argc, char *argv[]) { &starttime, &endtime, mctx, &b, rdata); isc_entropy_stopcallbacksources(ectx); - if (result != ISC_R_SUCCESS) - fatal("failed to sign keyset with key %s/%s/%d: %s", - nametostr(dst_key_name(keynode->key)), - algtostr(dst_key_alg(keynode->key)), - dst_key_id(keynode->key), - isc_result_totext(result)); + if (result != ISC_R_SUCCESS) { + char keystr[KEY_FORMATSIZE]; + key_format(keynode->key, keystr, sizeof keystr); + fatal("failed to sign keyset with key %s: %s", + keystr, isc_result_totext(result)); + } ISC_LIST_APPEND(sigrdatalist.rdata, rdata, link); dns_rdataset_init(&sigrdataset); result = dns_rdatalist_tordataset(&sigrdatalist, &sigrdataset); @@ -371,8 +372,11 @@ main(int argc, char *argv[]) { db = NULL; result = dns_db_create(mctx, "rbt", domain, dns_dbtype_zone, dns_rdataclass_in, 0, NULL, &db); - if (result != ISC_R_SUCCESS) - fatal("failed to create a database for %s", nametostr(domain)); + if (result != ISC_R_SUCCESS) { + char domainstr[DNS_NAME_FORMATSIZE]; + dns_name_format(domain, domainstr, sizeof domainstr); + fatal("failed to create a database for %s", domainstr); + } version = NULL; dns_db_newversion(db, &version); @@ -389,9 +393,12 @@ main(int argc, char *argv[]) { dns_db_detachnode(db, &node); dns_db_closeversion(db, &version, ISC_TRUE); result = dns_db_dump(db, version, output); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + char domainstr[DNS_NAME_FORMATSIZE]; + dns_name_format(domain, domainstr, sizeof domainstr); fatal("failed to write database for %s to %s", - nametostr(domain), output); + domainstr, output); + } dns_db_detach(&db); diff --git a/bin/dnssec/dnssec-signkey.c b/bin/dnssec/dnssec-signkey.c index dae1a638e6..3af3dd370e 100644 --- a/bin/dnssec/dnssec-signkey.c +++ b/bin/dnssec/dnssec-signkey.c @@ -17,7 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-signkey.c,v 1.32 2000/08/10 22:08:21 bwelling Exp $ */ +/* $Id: dnssec-signkey.c,v 1.33 2000/08/14 04:43:14 bwelling Exp $ */ #include @@ -252,17 +252,23 @@ main(int argc, char *argv[]) { node = NULL; result = dns_db_findnode(db, domain, ISC_FALSE, &node); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + char domainstr[DNS_NAME_FORMATSIZE]; + dns_name_format(domain, domainstr, sizeof domainstr); fatal("failed to find database node '%s': %s", - nametostr(domain), isc_result_totext(result)); + domainstr, isc_result_totext(result)); + } dns_rdataset_init(&rdataset); dns_rdataset_init(&sigrdataset); result = dns_db_findrdataset(db, node, version, dns_rdatatype_key, 0, 0, &rdataset, &sigrdataset); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + char domainstr[DNS_NAME_FORMATSIZE]; + dns_name_format(domain, domainstr, sizeof domainstr); fatal("failed to find rdataset '%s KEY': %s", - nametostr(domain), isc_result_totext(result)); + domainstr, isc_result_totext(result)); + } loadkeys(domain, &rdataset); @@ -278,11 +284,12 @@ main(int argc, char *argv[]) { key = findkey(&sig); result = dns_dnssec_verify(domain, &rdataset, key, ISC_TRUE, mctx, &sigrdata); - if (result != ISC_R_SUCCESS) - fatal("signature by key '%s/%s/%d' did not verify: %s", - nametostr(dst_key_name(key)), - algtostr(dst_key_alg(key)), - dst_key_id(key), isc_result_totext(result)); + if (result != ISC_R_SUCCESS) { + char keystr[KEY_FORMATSIZE]; + key_format(key, keystr, sizeof keystr); + fatal("signature by key '%s' did not verify: %s", + keystr, isc_result_totext(result)); + } dns_rdata_freestruct(&sig); result = dns_rdataset_next(&sigrdataset); } while (result == ISC_R_SUCCESS); @@ -329,11 +336,12 @@ main(int argc, char *argv[]) { &sig.timesigned, &sig.timeexpire, mctx, &b, rdata); isc_entropy_stopcallbacksources(ectx); - if (result != ISC_R_SUCCESS) - fatal("key '%s/%s/%d' failed to sign data: %s", - nametostr(dst_key_name(key)), - algtostr(dst_key_alg(key)), - dst_key_id(key), isc_result_totext(result)); + if (result != ISC_R_SUCCESS) { + char keystr[KEY_FORMATSIZE]; + key_format(key, keystr, sizeof keystr); + fatal("key '%s' failed to sign data: %s", + keystr, isc_result_totext(result)); + } ISC_LIST_APPEND(sigrdatalist.rdata, rdata, link); dst_key_free(&key); } diff --git a/bin/dnssec/dnssec-signzone.c b/bin/dnssec/dnssec-signzone.c index 3917a00541..ca6bca71e6 100644 --- a/bin/dnssec/dnssec-signzone.c +++ b/bin/dnssec/dnssec-signzone.c @@ -17,7 +17,7 @@ * PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssec-signzone.c,v 1.93 2000/08/11 23:59:46 bwelling Exp $ */ +/* $Id: dnssec-signzone.c,v 1.94 2000/08/14 04:43:15 bwelling Exp $ */ #include @@ -100,10 +100,12 @@ signwithkey(dns_name_t *name, dns_rdataset_t *rdataset, dns_rdata_t *rdata, result = dns_dnssec_sign(name, rdataset, key, &starttime, &endtime, mctx, b, rdata); isc_entropy_stopcallbacksources(ectx); - if (result != ISC_R_SUCCESS) - fatal("key '%s/%s/%d' failed to sign data: %s", - nametostr(dst_key_name(key)), algtostr(dst_key_alg(key)), - dst_key_id(key), isc_result_totext(result)); + if (result != ISC_R_SUCCESS) { + char keystr[KEY_FORMATSIZE]; + key_format(key, keystr, sizeof keystr); + fatal("key '%s' failed to sign data: %s", + keystr, isc_result_totext(result)); + } if (tryverify) { result = dns_dnssec_verify(name, rdataset, key, @@ -178,24 +180,25 @@ expecttofindkey(dns_name_t *name, dns_db_t *db, dns_dbversion_t *version) { unsigned int options = DNS_DBFIND_NOWILD; dns_fixedname_t fname; isc_result_t result; + char namestr[DNS_NAME_FORMATSIZE]; dns_fixedname_init(&fname); result = dns_db_find(db, name, version, dns_rdatatype_key, options, 0, NULL, dns_fixedname_name(&fname), NULL, NULL); switch (result) { - case ISC_R_SUCCESS: - case DNS_R_NXDOMAIN: - case DNS_R_NXRRSET: - return ISC_TRUE; - case DNS_R_DELEGATION: - case DNS_R_CNAME: - case DNS_R_DNAME: - return ISC_FALSE; - default: - fatal("failure looking for '%s KEY' in database: %s", - nametostr(name), isc_result_totext(result)); - return ISC_FALSE; /* removes a warning */ + case ISC_R_SUCCESS: + case DNS_R_NXDOMAIN: + case DNS_R_NXRRSET: + return (ISC_TRUE); + case DNS_R_DELEGATION: + case DNS_R_CNAME: + case DNS_R_DNAME: + return (ISC_FALSE); } + dns_name_format(name, namestr, sizeof namestr); + fatal("failure looking for '%s KEY' in database: %s", + namestr, isc_result_totext(result)); + return (ISC_FALSE); /* removes a warning */ } static inline isc_boolean_t @@ -226,6 +229,12 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, dns_difftuple_t *tuple; dns_ttl_t ttl; int i; + char namestr[DNS_NAME_FORMATSIZE]; + char typestr[TYPE_FORMATSIZE]; + char sigstr[SIG_FORMATSIZE]; + + dns_name_format(name, namestr, sizeof namestr); + type_format(set->type, typestr, sizeof typestr); ttl = ISC_MIN(set->ttl, endtime - starttime); @@ -241,10 +250,9 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, } if (result != ISC_R_SUCCESS) fatal("failed while looking for '%s SIG %s': %s", - nametostr(name), typetostr(set->type), - isc_result_totext(result)); + namestr, typestr, isc_result_totext(result)); - vbprintf(1, "%s/%s:\n", nametostr(name), typetostr(set->type)); + vbprintf(1, "%s/%s:\n", namestr, typestr); if (nosigs) result = ISC_R_NOMORE; @@ -264,35 +272,34 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, future = ISC_TF(now < sig.timesigned); key = keythatsigned(&sig); + sig_format(&sig, sigstr, sizeof sigstr); if (sig.timesigned > sig.timeexpire) { /* sig is dropped and not replaced */ vbprintf(2, "\tsig by %s dropped - " "invalid validity period\n", - sigtostr(&sig)); + sigstr); } else if (key == NULL && !future && expecttofindkey(&sig.signer, db, version)) { /* sig is dropped and not replaced */ vbprintf(2, "\tsig by %s dropped - " "private key not found\n", - sigtostr(&sig)); + sigstr); } else if (key == NULL || future) { vbprintf(2, "\tsig by %s %s - key not found\n", - expired ? "retained" : "dropped", - sigtostr(&sig)); + expired ? "retained" : "dropped", sigstr); if (!expired) keep = ISC_TRUE; } else if (issigningkey(key)) { if (!expired && setverifies(name, set, key, &sigrdata)) { - vbprintf(2, "\tsig by %s retained\n", - sigtostr(&sig)); + vbprintf(2, "\tsig by %s retained\n", sigstr); keep = ISC_TRUE; wassignedby[sig.algorithm] = ISC_TRUE; } else { vbprintf(2, "\tsig by %s dropped - %s\n", - sigtostr(&sig), + sigstr, expired ? "expired" : "failed to verify"); wassignedby[sig.algorithm] = ISC_TRUE; @@ -301,14 +308,13 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, } else if (iszonekey(key, db)) { if (!expired && setverifies(name, set, key, &sigrdata)) { - vbprintf(2, "\tsig by %s retained\n", - sigtostr(&sig)); + vbprintf(2, "\tsig by %s retained\n", sigstr); keep = ISC_TRUE; wassignedby[sig.algorithm] = ISC_TRUE; nowsignedby[sig.algorithm] = ISC_TRUE; } else { vbprintf(2, "\tsig by %s dropped - %s\n", - sigtostr(&sig), + sigstr, expired ? "expired" : "failed to verify"); wassignedby[sig.algorithm] = ISC_TRUE; @@ -316,12 +322,10 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, resign = ISC_TRUE; } } else if (!expired) { - vbprintf(2, "\tsig by %s retained\n", - sigtostr(&sig)); + vbprintf(2, "\tsig by %s retained\n", sigstr); keep = ISC_TRUE; } else { - vbprintf(2, "\tsig by %s expired\n", - sigtostr(&sig)); + vbprintf(2, "\tsig by %s expired\n", sigstr); } if (keep) @@ -339,11 +343,10 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, isc_buffer_t b; dns_rdata_t trdata; unsigned char array[BUFSIZE]; + char keystr[KEY_FORMATSIZE]; - vbprintf(1, "\tresigning with key %s/%s/%d\n", - nametostr(dst_key_name(key->key)), - algtostr(dst_key_alg(key->key)), - dst_key_id(key->key)); + key_format(key->key, keystr, sizeof keystr); + vbprintf(1, "\tresigning with key %s\n", keystr); isc_buffer_init(&b, array, sizeof(array)); signwithkey(name, set, &trdata, key->key, &b); nowsignedby[sig.algorithm] = ISC_TRUE; @@ -380,11 +383,10 @@ signset(dns_db_t *db, dns_dbversion_t *version, dns_diff_t *diff, isc_buffer_t b; dns_rdata_t trdata; unsigned char array[BUFSIZE]; + char keystr[KEY_FORMATSIZE]; - vbprintf(1, "\tsigning with key %s/%s/%d\n", - nametostr(dst_key_name(key->key)), - algtostr(dst_key_alg(key->key)), - dst_key_id(key->key)); + key_format(key->key, keystr, sizeof keystr); + vbprintf(1, "\tsigning with key %s\n", keystr); isc_buffer_init(&b, array, sizeof(array)); signwithkey(name, set, &trdata, key->key, &b); tuple = NULL; @@ -438,8 +440,11 @@ opendb(const char *prefix, dns_name_t *name, dns_rdataclass_t rdclass, isc_buffer_putstr(&b, prefix); result = dns_name_totext(name, ISC_FALSE, &b); check_result(result, "dns_name_totext()"); - if (isc_buffer_availablelength(&b) == 0) - fatal("name '%s' is too long", nametostr(name)); + if (isc_buffer_availablelength(&b) == 0) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); + fatal("name '%s' is too long", namestr); + } isc_buffer_putuint8(&b, 0); result = dns_db_create(mctx, "rbt", name, dns_dbtype_zone, @@ -634,8 +639,10 @@ createnullkey(dns_db_t *db, dns_dbversion_t *version, dns_name_t *name) { dns_difftuple_t *tuple = NULL; isc_buffer_t b; isc_result_t result; + char namestr[DNS_NAME_FORMATSIZE]; - vbprintf(2, "adding null key at %s\n", nametostr(name)); + dns_name_format(name, namestr, sizeof namestr); + vbprintf(2, "adding null key at %s\n", namestr); key.common.rdclass = dns_db_class(db); key.common.rdtype = dns_rdatatype_key; @@ -686,6 +693,8 @@ signname(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node, dns_diff_t diff; if (dns_name_iswildcard(name)) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); if (warnwild++ == 0) { fprintf(stderr, "%s: warning: BIND 9 doesn't properly " "handle wildcards in secure zones:\n", @@ -696,7 +705,7 @@ signname(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node, "not required by the resolver\n"); } fprintf(stderr, "%s: warning: wildcard name seen: %s\n", - program, nametostr(name)); + program, namestr); } atorigin = dns_name_equal(name, dns_db_origin(db)); @@ -732,17 +741,20 @@ signname(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node, result = dns_db_findrdataset(db, node, version, dns_rdatatype_key, 0, 0, &keyset, NULL); - if (result == ISC_R_SUCCESS && childkey) + if (result == ISC_R_SUCCESS && childkey) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); fatal("%s has both a signedkey file and KEY " - "records in the zone. Aborting.", - nametostr(name)); + "records in the zone. Aborting.", namestr); + } else if (result == ISC_R_SUCCESS) { if (hasnullkey(&keyset)) neednullkey = ISC_FALSE; dns_rdataset_disassociate(&keyset); } else if (childkey) { - vbprintf(2, "child key for %s found\n", - nametostr(name)); + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); + vbprintf(2, "child key for %s found\n", namestr); neednullkey = ISC_FALSE; } @@ -797,14 +809,20 @@ signname(dns_db_t *db, dns_dbversion_t *version, dns_dbnode_t *node, dns_rdataset_disassociate(&rdataset); result = dns_rdatasetiter_next(rdsiter); } - if (result != ISC_R_NOMORE) + if (result != ISC_R_NOMORE) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); fatal("rdataset iteration for name '%s' failed: %s", - nametostr(name), isc_result_totext(result)); + namestr, isc_result_totext(result)); + } dns_rdatasetiter_destroy(&rdsiter); result = dns_diff_apply(&diff, db, version); - if (result != ISC_R_SUCCESS) - fatal("failed to add SIGs at node %s", nametostr(name)); + if (result != ISC_R_SUCCESS) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); + fatal("failed to add SIGs at node %s", namestr); + } dns_diff_clear(&diff); } @@ -918,9 +936,12 @@ minimumttl(dns_db_t *db, dns_dbversion_t *version) { dns_rdataset_init(&soaset); result = dns_db_find(db, origin, version, dns_rdatatype_soa, 0, 0, NULL, name, &soaset, NULL); - if (result != ISC_R_SUCCESS) + if (result != ISC_R_SUCCESS) { + char namestr[DNS_NAME_FORMATSIZE]; + dns_name_format(name, namestr, sizeof namestr); fatal("failed to find '%s SOA' in the zone: %s", - nametostr(name), isc_result_totext(result)); + namestr, isc_result_totext(result)); + } result = dns_rdataset_first(&soaset); check_result(result, "dns_rdataset_first()"); dns_rdataset_current(&soaset, &soarr); diff --git a/bin/dnssec/dnssectool.c b/bin/dnssec/dnssectool.c index 67c33e541a..8783f2c647 100644 --- a/bin/dnssec/dnssectool.c +++ b/bin/dnssec/dnssectool.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssectool.c,v 1.16 2000/08/11 23:07:51 bwelling Exp $ */ +/* $Id: dnssectool.c,v 1.17 2000/08/14 04:43:16 bwelling Exp $ */ #include @@ -76,72 +76,50 @@ vbprintf(int level, const char *fmt, ...) { va_end(ap); } -char * -nametostr(dns_name_t *name) { +void +type_format(const dns_rdatatype_t type, char *cp, unsigned int size) { isc_buffer_t b; isc_region_t r; isc_result_t result; - static char data[DNS_NAME_MAXTEXT]; - isc_buffer_init(&b, data, sizeof(data)); - result = dns_name_totext(name, ISC_FALSE, &b); - check_result(result, "dns_name_totext()"); - isc_buffer_usedregion(&b, &r); - r.base[r.length] = 0; - return (char *) r.base; -} - -char * -typetostr(const dns_rdatatype_t type) { - isc_buffer_t b; - isc_region_t r; - isc_result_t result; - static char data[20]; - - isc_buffer_init(&b, data, sizeof(data)); + isc_buffer_init(&b, cp, size - 1); result = dns_rdatatype_totext(type, &b); check_result(result, "dns_rdatatype_totext()"); isc_buffer_usedregion(&b, &r); r.base[r.length] = 0; - return (char *) r.base; } -char * -algtostr(const dns_secalg_t alg) { +void +alg_format(const dns_secalg_t alg, char *cp, unsigned int size) { isc_buffer_t b; isc_region_t r; isc_result_t result; - static char data[10]; - isc_buffer_init(&b, data, sizeof(data)); + isc_buffer_init(&b, cp, size - 1); result = dns_secalg_totext(alg, &b); check_result(result, "dns_secalg_totext()"); isc_buffer_usedregion(&b, &r); r.base[r.length] = 0; - return ((char *)r.base); } -char * -sigtostr(dns_rdata_sig_t *sig) { - isc_buffer_t b; - isc_result_t result; - static char data[DNS_NAME_MAXTEXT + 30]; - char number[sizeof("65536") + 1]; +void +sig_format(dns_rdata_sig_t *sig, char *cp, unsigned int size) { + char namestr[DNS_NAME_FORMATSIZE]; + char algstr[DNS_NAME_FORMATSIZE]; - isc_buffer_init(&b, data, sizeof(data)); + dns_name_format(&sig->signer, namestr, sizeof namestr); + alg_format(sig->algorithm, algstr, sizeof algstr); + snprintf(cp, size, "%s/%s/%d", namestr, algstr, sig->keyid); +} - result = dns_name_totext(&sig->signer, ISC_FALSE, &b); - check_result(result, "dns_name_totext()"); - isc_buffer_putstr(&b, "/"); +void +key_format(const dst_key_t *key, char *cp, unsigned int size) { + char namestr[DNS_NAME_FORMATSIZE]; + char algstr[DNS_NAME_FORMATSIZE]; - result = dns_secalg_totext(sig->algorithm, &b); - check_result(result, "dns_secalg_totext()"); - isc_buffer_putstr(&b, "/"); - - sprintf(number, "%d", sig->keyid); - isc_buffer_putstr(&b, number); - - return (data); + dns_name_format(dst_key_name(key), namestr, sizeof namestr); + alg_format(dst_key_alg(key), algstr, sizeof algstr); + snprintf(cp, size, "%s/%s/%d", namestr, algstr, dst_key_id(key)); } void diff --git a/bin/dnssec/dnssectool.h b/bin/dnssec/dnssectool.h index 7a32a33f5d..dca632efef 100644 --- a/bin/dnssec/dnssectool.h +++ b/bin/dnssec/dnssectool.h @@ -15,13 +15,14 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: dnssectool.h,v 1.9 2000/08/11 23:07:53 bwelling Exp $ */ +/* $Id: dnssectool.h,v 1.10 2000/08/14 04:43:17 bwelling Exp $ */ #ifndef DNSSECTOOL_H #define DNSSECTOOL_H 1 #include #include +#include void fatal(const char *format, ...) ISC_FORMAT_PRINTF(1, 2); @@ -32,17 +33,21 @@ check_result(isc_result_t result, const char *message); void vbprintf(int level, const char *fmt, ...); -char * -nametostr(dns_name_t *name); +void +type_format(const dns_rdatatype_t type, char *cp, unsigned int size); +#define TYPE_FORMATSIZE 10 -char * -typetostr(const dns_rdatatype_t type); +void +alg_format(const dns_secalg_t alg, char *cp, unsigned int size); +#define ALG_FORMATSIZE 10 -char * -algtostr(const dns_secalg_t alg); +void +sig_format(dns_rdata_sig_t *sig, char *cp, unsigned int size); +#define SIG_FORMATSIZE (DNS_NAME_FORMATSIZE + ALG_FORMATSIZE + sizeof("65535")) -char * -sigtostr(dns_rdata_sig_t *sig); +void +key_format(const dst_key_t *key, char *cp, unsigned int size); +#define KEY_FORMATSIZE (DNS_NAME_FORMATSIZE + ALG_FORMATSIZE + sizeof("65535")) void setup_logging(int verbose, isc_mem_t *mctx, isc_log_t **logp);