From d780c35e54f877df716e28db3e19d722cec44aa7 Mon Sep 17 00:00:00 2001 From: Brian Wellington Date: Thu, 28 Dec 2000 00:43:12 +0000 Subject: [PATCH] remove all vestiges of 16 bit global compression --- bin/tests/names/dns_name_fromwire_1_data | 1 - bin/tests/names/dns_name_fromwire_2_data | 1 - bin/tests/names/dns_name_fromwire_3_data | 1 - bin/tests/names/dns_name_fromwire_4_data | 1 - bin/tests/names/dns_name_fromwire_5_data | 1 - bin/tests/names/dns_name_fromwire_6_data | 1 - bin/tests/names/dns_name_fromwire_7_data | 1 - bin/tests/names/dns_name_fromwire_8_data | 1 - bin/tests/names/dns_name_fromwire_9_data | 1 - bin/tests/names/dns_name_towire_1_data | 1 - bin/tests/names/dns_name_towire_2_data | 1 - bin/tests/names/t_names.c | 4 +-- lib/dns/include/dns/compress.h | 5 ++-- lib/dns/include/dns/name.h | 3 +- lib/dns/name.c | 38 ++++++++---------------- lib/tests/t_api.c | 3 +- 16 files changed, 18 insertions(+), 46 deletions(-) diff --git a/bin/tests/names/dns_name_fromwire_1_data b/bin/tests/names/dns_name_fromwire_1_data index f329150219..549a8b033e 100644 --- a/bin/tests/names/dns_name_fromwire_1_data +++ b/bin/tests/names/dns_name_fromwire_1_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_2_data b/bin/tests/names/dns_name_fromwire_2_data index fd790c0a7c..d669490552 100644 --- a/bin/tests/names/dns_name_fromwire_2_data +++ b/bin/tests/names/dns_name_fromwire_2_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_3_data b/bin/tests/names/dns_name_fromwire_3_data index 04a1638572..deeca0a315 100644 --- a/bin/tests/names/dns_name_fromwire_3_data +++ b/bin/tests/names/dns_name_fromwire_3_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_4_data b/bin/tests/names/dns_name_fromwire_4_data index 4dc9104924..a45855e173 100644 --- a/bin/tests/names/dns_name_fromwire_4_data +++ b/bin/tests/names/dns_name_fromwire_4_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_5_data b/bin/tests/names/dns_name_fromwire_5_data index 0803e0df0e..4d2da865c3 100644 --- a/bin/tests/names/dns_name_fromwire_5_data +++ b/bin/tests/names/dns_name_fromwire_5_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_6_data b/bin/tests/names/dns_name_fromwire_6_data index fdd6ca8dfd..39dd88b275 100644 --- a/bin/tests/names/dns_name_fromwire_6_data +++ b/bin/tests/names/dns_name_fromwire_6_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_7_data b/bin/tests/names/dns_name_fromwire_7_data index fd13d53344..65c02022f4 100644 --- a/bin/tests/names/dns_name_fromwire_7_data +++ b/bin/tests/names/dns_name_fromwire_7_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_8_data b/bin/tests/names/dns_name_fromwire_8_data index b0523abb4a..160d9a15d2 100644 --- a/bin/tests/names/dns_name_fromwire_8_data +++ b/bin/tests/names/dns_name_fromwire_8_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_fromwire_9_data b/bin/tests/names/dns_name_fromwire_9_data index fb92336cbf..22e6838781 100644 --- a/bin/tests/names/dns_name_fromwire_9_data +++ b/bin/tests/names/dns_name_fromwire_9_data @@ -15,7 +15,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_name is the expected name after any decompression diff --git a/bin/tests/names/dns_name_towire_1_data b/bin/tests/names/dns_name_towire_1_data index a853989fcc..60adf11cc7 100644 --- a/bin/tests/names/dns_name_towire_1_data +++ b/bin/tests/names/dns_name_towire_1_data @@ -9,7 +9,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_data is the expected wire format data in hex format diff --git a/bin/tests/names/dns_name_towire_2_data b/bin/tests/names/dns_name_towire_2_data index 77bfc92eed..22aa60ecbd 100644 --- a/bin/tests/names/dns_name_towire_2_data +++ b/bin/tests/names/dns_name_towire_2_data @@ -9,7 +9,6 @@ # DNS_COMPRESS_ALL # DNS_COMPRESS_GLOBAL # DNS_COMPRESS_GLOBAL14 -# DNS_COMPRESS_GLOBAL16 # DNS_COMPRESS_NONE # # and where exp_data is the expected wire format data in hex format diff --git a/bin/tests/names/t_names.c b/bin/tests/names/t_names.c index 28f9eba331..2dc39ff9e8 100644 --- a/bin/tests/names/t_names.c +++ b/bin/tests/names/t_names.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: t_names.c,v 1.29 2000/11/14 23:29:47 bwelling Exp $ */ +/* $Id: t_names.c,v 1.30 2000/12/28 00:43:12 bwelling Exp $ */ #include @@ -2242,8 +2242,6 @@ t_dns_name_fromwire_x(const char *testfile, size_t buflen) { dc_method = DNS_COMPRESS_NONE; if (! strcmp(tok, "DNS_COMPRESS_GLOBAL14")) dc_method = DNS_COMPRESS_GLOBAL14; - else if (! strcmp(tok,"DNS_COMPRESS_GLOBAL16")) - dc_method = DNS_COMPRESS_GLOBAL16; else if (! strcmp(tok, "DNS_COMPRESS_GLOBAL")) dc_method = DNS_COMPRESS_GLOBAL; else if (! strcmp(tok, "DNS_COMPRESS_ALL")) diff --git a/lib/dns/include/dns/compress.h b/lib/dns/include/dns/compress.h index 6a0d1cab0a..c466544c7d 100644 --- a/lib/dns/include/dns/compress.h +++ b/lib/dns/include/dns/compress.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: compress.h,v 1.19 2000/11/14 23:29:55 bwelling Exp $ */ +/* $Id: compress.h,v 1.20 2000/12/28 00:42:56 bwelling Exp $ */ #ifndef DNS_COMPRESS_H #define DNS_COMPRESS_H 1 @@ -28,8 +28,7 @@ ISC_LANG_BEGINDECLS #define DNS_COMPRESS_NONE 0x00 /* no compression */ #define DNS_COMPRESS_GLOBAL14 0x01 /* "normal" compression. */ -#define DNS_COMPRESS_GLOBAL16 0x02 /* 16-bit edns global comp. */ -#define DNS_COMPRESS_GLOBAL 0x03 /* all global comp. */ +#define DNS_COMPRESS_GLOBAL 0x01 /* all global comp. */ /* * Synonymous with DNS_COMPRESS_GLOBAL. A genuine difference existed when * local compression was an IETF draft, but that draft has been retired without diff --git a/lib/dns/include/dns/name.h b/lib/dns/include/dns/name.h index 42b4ce3841..305f22139f 100644 --- a/lib/dns/include/dns/name.h +++ b/lib/dns/include/dns/name.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: name.h,v 1.82 2000/11/27 19:42:34 gson Exp $ */ +/* $Id: name.h,v 1.83 2000/12/28 00:42:58 bwelling Exp $ */ #ifndef DNS_NAME_H #define DNS_NAME_H 1 @@ -93,7 +93,6 @@ ISC_LANG_BEGINDECLS *** Extended Label Types ***/ -#define DNS_LABELTYPE_GLOBALCOMP16 0x40 #define DNS_LABELTYPE_BITSTRING 0x41 /*** diff --git a/lib/dns/name.c b/lib/dns/name.c index a4284d1ab4..55c2e1306c 100644 --- a/lib/dns/name.c +++ b/lib/dns/name.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: name.c,v 1.109 2000/12/11 19:24:14 bwelling Exp $ */ +/* $Id: name.c,v 1.110 2000/12/28 00:42:55 bwelling Exp $ */ #include @@ -2290,16 +2290,6 @@ dns_name_fromwire(dns_name_t *name, isc_buffer_t *source, *ndata++ = c; saw_bitstring = ISC_TRUE; state = fw_bitstring; - } else if (c == DNS_LABELTYPE_GLOBALCOMP16) { - /* - * 16-bit pointer. - */ - if ((dctx->allowed & DNS_COMPRESS_GLOBAL16) == - 0) - return (DNS_R_DISALLOWED); - new_current = 0; - n = 2; - state = fw_newcurrent; } else return (DNS_R_BADLABELTYPE); break; @@ -2430,10 +2420,17 @@ dns_name_towire(dns_name_t *name, dns_compress_t *cctx, isc_buffer_t *target) { else gf = ISC_FALSE; + /* + * If the offset is too high for 14 bit global compression, we're + * out of luck. + */ + if (gf && go >= 0x4000) + gf = ISC_FALSE; + /* * Will the compression pointer reduce the message size? */ - if (gf && (gp.length + ((go < 16384) ? 2 : 3)) >= name->length) + if (gf && (gp.length + 2) >= name->length) gf = ISC_FALSE; if (gf) { @@ -2442,19 +2439,10 @@ dns_name_towire(dns_name_t *name, dns_compress_t *cctx, isc_buffer_t *target) { (void)memcpy((unsigned char *)target->base + target->used, gp.ndata, (size_t)gp.length); isc_buffer_add(target, gp.length); - if (go < 16384) { - go |= 0xc000; - if (target->length - target->used < 2) - return (ISC_R_NOSPACE); - isc_buffer_putuint16(target, go); - } else { - if (target->length - target->used < 3) - return (ISC_R_NOSPACE); - *((unsigned char*)target->base + target->used) = - DNS_LABELTYPE_GLOBALCOMP16; - isc_buffer_add(target, 1); - isc_buffer_putuint16(target, go); - } + go |= 0xc000; + if (target->length - target->used < 2) + return (ISC_R_NOSPACE); + isc_buffer_putuint16(target, go); if (gp.length != 0) dns_compress_add(cctx, &gp, &gs, offset); } else { diff --git a/lib/tests/t_api.c b/lib/tests/t_api.c index 119e5d441e..6c6997b4ea 100644 --- a/lib/tests/t_api.c +++ b/lib/tests/t_api.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: t_api.c,v 1.44 2000/11/25 01:20:47 marka Exp $ */ +/* $Id: t_api.c,v 1.45 2000/12/28 00:42:59 bwelling Exp $ */ #include @@ -654,7 +654,6 @@ struct dc_method_map { { DNS_COMPRESS_NONE, "DNS_COMPRESS_NONE" }, { DNS_COMPRESS_GLOBAL14, "DNS_COMPRESS_GLOBAL14" }, - { DNS_COMPRESS_GLOBAL16, "DNS_COMPRESS_GLOBAL16" }, { DNS_COMPRESS_GLOBAL, "DNS_COMPRESS_GLOBAL" }, { DNS_COMPRESS_ALL, "DNS_COMPRESS_ALL" }, { 0, NULL }