From bfb2a81b65579882a80855c279cedc45aebd62e8 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Tue, 19 Jan 1999 05:16:32 +0000 Subject: [PATCH] Fix initial towire/fromwire so they work. --- lib/dns/gen.c | 7 +++++-- lib/dns/rdata.c | 2 +- lib/dns/rdata/generic/hinfo_13.c | 7 +++++-- lib/dns/rdata/generic/hinfo_13.h | 7 +++++-- lib/dns/rdata/generic/soa_6.c | 2 +- lib/dns/rdata/generic/soa_6.h | 2 +- lib/dns/rdata/generic/txt_16.c | 8 +++++--- lib/dns/rdata/generic/txt_16.h | 8 +++++--- 8 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/dns/gen.c b/lib/dns/gen.c index b9703818e8..9cd65ece84 100644 --- a/lib/dns/gen.c +++ b/lib/dns/gen.c @@ -298,6 +298,7 @@ main(int argc, char **argv) { struct tm *tm; time_t now; char year[11]; + int lasttype; argc = argc; argv = argv; @@ -355,11 +356,13 @@ main(int argc, char **argv) { fprintf(stdout, "\n#define TYPENAMES%s\n", types != NULL ? " \\" : ""); + + lasttype = 0; for (tt = types; tt != NULL ; tt = tt->next) - if (tt->class == 0) + if (tt->type != lasttype) fprintf(stdout, "\t{ %d, \"%s\" },%s\n", - tt->type, tt->typename, + lasttype = tt->type, tt->typename, tt->next != NULL ? " \\" : ""); fputs("\n", stdout); diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index df9a1c9048..909a61843a 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -331,7 +331,7 @@ txt_fromwire(isc_buffer_t *source, isc_buffer_t *target) { return (DNS_R_UNKNOWN); isc_buffer_available(target, &tregion); - if (n < tregion.length) + if (n > tregion.length) return (DNS_R_NOSPACE); memcpy(tregion.base, sregion.base, n); diff --git a/lib/dns/rdata/generic/hinfo_13.c b/lib/dns/rdata/generic/hinfo_13.c index 4a19ad9cf0..db66b67c5c 100644 --- a/lib/dns/rdata/generic/hinfo_13.c +++ b/lib/dns/rdata/generic/hinfo_13.c @@ -84,13 +84,16 @@ fromwire_hinfo(dns_rdataclass_t class, dns_rdatatype_t type, static dns_result_t towire_hinfo(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { + isc_region_t region; cctx = cctx; - if (target->length < rdata->length) + isc_buffer_available(target, ®ion); + if (region.length < rdata->length) return (DNS_R_NOSPACE); - memcpy(target->base, rdata->data, rdata->length); + memcpy(region.base, rdata->data, rdata->length); + isc_buffer_add(target, rdata->length); return (DNS_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/hinfo_13.h b/lib/dns/rdata/generic/hinfo_13.h index 4a19ad9cf0..db66b67c5c 100644 --- a/lib/dns/rdata/generic/hinfo_13.h +++ b/lib/dns/rdata/generic/hinfo_13.h @@ -84,13 +84,16 @@ fromwire_hinfo(dns_rdataclass_t class, dns_rdatatype_t type, static dns_result_t towire_hinfo(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { + isc_region_t region; cctx = cctx; - if (target->length < rdata->length) + isc_buffer_available(target, ®ion); + if (region.length < rdata->length) return (DNS_R_NOSPACE); - memcpy(target->base, rdata->data, rdata->length); + memcpy(region.base, rdata->data, rdata->length); + isc_buffer_add(target, rdata->length); return (DNS_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/soa_6.c b/lib/dns/rdata/generic/soa_6.c index f575664dea..3541851424 100644 --- a/lib/dns/rdata/generic/soa_6.c +++ b/lib/dns/rdata/generic/soa_6.c @@ -190,7 +190,7 @@ towire_soa(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { if (result != DNS_R_SUCCESS) return (result); - isc_buffer_remaining(target, &tregion); + isc_buffer_available(target, &tregion); if (tregion.length < 20) return (DNS_R_NOSPACE); diff --git a/lib/dns/rdata/generic/soa_6.h b/lib/dns/rdata/generic/soa_6.h index f575664dea..3541851424 100644 --- a/lib/dns/rdata/generic/soa_6.h +++ b/lib/dns/rdata/generic/soa_6.h @@ -190,7 +190,7 @@ towire_soa(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { if (result != DNS_R_SUCCESS) return (result); - isc_buffer_remaining(target, &tregion); + isc_buffer_available(target, &tregion); if (tregion.length < 20) return (DNS_R_NOSPACE); diff --git a/lib/dns/rdata/generic/txt_16.c b/lib/dns/rdata/generic/txt_16.c index 45c2e86e31..d34e6f3654 100644 --- a/lib/dns/rdata/generic/txt_16.c +++ b/lib/dns/rdata/generic/txt_16.c @@ -86,14 +86,16 @@ fromwire_txt(dns_rdataclass_t class, dns_rdatatype_t type, static dns_result_t towire_txt(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { + isc_region_t region; cctx = cctx; - if (target->length < rdata->length) + isc_buffer_available(target, ®ion); + if (region.length < rdata->length) return (DNS_R_NOSPACE); - memcpy(target->base, rdata->data, rdata->length); - /*XXX*/ + memcpy(region.base, rdata->data, rdata->length); + isc_buffer_add(target, rdata->length); return (DNS_R_SUCCESS); } diff --git a/lib/dns/rdata/generic/txt_16.h b/lib/dns/rdata/generic/txt_16.h index 45c2e86e31..d34e6f3654 100644 --- a/lib/dns/rdata/generic/txt_16.h +++ b/lib/dns/rdata/generic/txt_16.h @@ -86,14 +86,16 @@ fromwire_txt(dns_rdataclass_t class, dns_rdatatype_t type, static dns_result_t towire_txt(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) { + isc_region_t region; cctx = cctx; - if (target->length < rdata->length) + isc_buffer_available(target, ®ion); + if (region.length < rdata->length) return (DNS_R_NOSPACE); - memcpy(target->base, rdata->data, rdata->length); - /*XXX*/ + memcpy(region.base, rdata->data, rdata->length); + isc_buffer_add(target, rdata->length); return (DNS_R_SUCCESS); }