]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
4461. [bug] win32: not all external data was properly marked
authorMark Andrews <marka@isc.org>
Wed, 7 Sep 2016 04:12:11 +0000 (14:12 +1000)
committerMark Andrews <marka@isc.org>
Wed, 7 Sep 2016 04:12:11 +0000 (14:12 +1000)
                        as external data for windows dll. [RT #43161]

16 files changed:
CHANGES
bin/named/main.c
lib/dns/dst_api.c
lib/dns/dst_internal.h
lib/dns/iptable.c
lib/dns/opensslgost_link.c
lib/dns/win32/libdns.def.in
lib/dns/zone.c
lib/isc/backtrace-emptytbl.c
lib/isc/include/isc/backtrace.h
lib/isc/win32/libisc.def.in
lib/isc/win32/socket.c
lib/isccc/win32/libisccc.def
lib/isccfg/parser.c
lib/isccfg/win32/libisccfg.def
lib/tests/t_api.c

diff --git a/CHANGES b/CHANGES
index 91462d32d30281444982faa485432781d9e9378d..88775a39b93e68d9a86cdcc4f02c822cacccdd44 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,8 @@
        --- 9.11.0rc1 released ---
 
+4461.  [bug]           win32: not all external data was properly marked
+                       as external data for windows dll. [RT #43161]
+
 4460.  [test]          Add system test for dnstap using unix domain sockets.
                        [RT #42926]
 
index a455c1856a1f3d0190643ba30c672f7aca0fe05a..e0dafb18d897db11e89d9dcf0f9385884076a0c7 100644 (file)
 #define BACKTRACE_MAXFRAME 128
 #endif
 
-extern int isc_dscp_check_value;
-extern unsigned int dns_zone_mkey_hour;
-extern unsigned int dns_zone_mkey_day;
-extern unsigned int dns_zone_mkey_month;
+LIBISC_EXTERNAL_DATA extern int isc_dscp_check_value;
+LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_hour;
+LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_day;
+LIBDNS_EXTERNAL_DATA extern unsigned int dns_zone_mkey_month;
 
 static isc_boolean_t   want_stats = ISC_FALSE;
 static char            program_name[ISC_DIR_NAMEMAX] = "named";
index f071fef1d9ab9451c1274cf670bbd0c081a226c3..65f5768d01d402139f50f89fbdc0b5190a3dddba 100644 (file)
@@ -71,11 +71,11 @@ static dst_func_t *dst_t_func[DST_MAX_ALGS];
 static isc_entropy_t *dst_entropy_pool = NULL;
 static unsigned int dst_entropy_flags = 0;
 
-isc_boolean_t dst_initialized = ISC_FALSE;
+static isc_boolean_t dst_initialized = ISC_FALSE;
 
 void gss_log(int level, const char *fmt, ...) ISC_FORMAT_PRINTF(2, 3);
 
-isc_mem_t *dst__memory_pool = NULL;
+LIBDNS_EXTERNAL_DATA isc_mem_t *dst__memory_pool = NULL;
 
 /*
  * Static functions.
index 4a42097efa8c96ad038d01ba192447713ab5bffa..d115d1a926f553678f79e578a67ab29859d3e783 100644 (file)
@@ -66,7 +66,7 @@ ISC_LANG_BEGINDECLS
 #define VALID_KEY(x) ISC_MAGIC_VALID(x, KEY_MAGIC)
 #define VALID_CTX(x) ISC_MAGIC_VALID(x, CTX_MAGIC)
 
-extern isc_mem_t *dst__memory_pool;
+LIBDNS_EXTERNAL_DATA extern isc_mem_t *dst__memory_pool;
 
 /***
  *** Types
index 4d4f76bc8f58afda583ee4cc465286ccb5b77667..21029e0d84f27d08a284489037d184e51127fe0f 100644 (file)
@@ -44,8 +44,8 @@ dns_iptable_create(isc_mem_t *mctx, dns_iptable_t **target) {
        return (result);
 }
 
-isc_boolean_t dns_iptable_neg = ISC_FALSE;
-isc_boolean_t dns_iptable_pos = ISC_TRUE;
+static isc_boolean_t dns_iptable_neg = ISC_FALSE;
+static isc_boolean_t dns_iptable_pos = ISC_TRUE;
 
 /*
  * Add an IP prefix to an existing IP table
index e309e0321267abe15b717eba4c1ea6e365fe55b4..6b04f7b77f3d54569137a06764f8063ed5155927 100644 (file)
@@ -273,7 +273,7 @@ opensslgost_destroy(dst_key_t *key) {
        key->keydata.pkey = NULL;
 }
 
-unsigned char gost_prefix[37] = {
+static const unsigned char gost_prefix[37] = {
        0x30, 0x63, 0x30, 0x1c, 0x06, 0x06, 0x2a, 0x85,
        0x03, 0x02, 0x02, 0x13, 0x30, 0x12, 0x06, 0x07,
        0x2a, 0x85, 0x03, 0x02, 0x02, 0x23, 0x01, 0x06,
index 594125ef4d9f42cb62ab43ca95f6b6db30aeda32..dc542baab3aefe5ab5a661652f7369ea4f3ce889 100644 (file)
@@ -1240,9 +1240,6 @@ dns_zone_log
 dns_zone_logc
 dns_zone_maintenance
 dns_zone_markdirty
-dns_zone_mkey_day
-dns_zone_mkey_hour
-dns_zone_mkey_month
 dns_zone_name
 dns_zone_nameonly
 dns_zone_next
@@ -1466,5 +1463,13 @@ dst_result_totext
 
 EXPORTS
 
+dns_pps                        DATA
 dns_master_style_full  DATA
+dns_msgcat             DATA
+dns_tsig_hmacmd5_name  DATA
+dns_zone_mkey_day      DATA
+dns_zone_mkey_hour     DATA
+dns_zone_mkey_month    DATA
+dst__memory_pool       DATA
+dst_msgcat             DATA
 @END NOLONGER
index e3c884f5bda0410045fd8f71923ebfa7497b6458..e48da3e3169522bada44ebb0ec97bf08eac42821 100644 (file)
@@ -720,9 +720,9 @@ struct dns_include {
 #define HOUR 3600
 #define DAY (24*HOUR)
 #define MONTH (30*DAY)
-unsigned int dns_zone_mkey_hour = HOUR;
-unsigned int dns_zone_mkey_day = DAY;
-unsigned int dns_zone_mkey_month = MONTH;
+LIBDNS_EXTERNAL_DATA unsigned int dns_zone_mkey_hour = HOUR;
+LIBDNS_EXTERNAL_DATA unsigned int dns_zone_mkey_day = DAY;
+LIBDNS_EXTERNAL_DATA unsigned int dns_zone_mkey_month = MONTH;
 
 #define SEND_BUFFER_SIZE 2048
 
index 1dbd0827a90827d3d713f72a3aa5450ccc37dfbb..dd0bd2acd99e5628aae425cc788d6ff32d98cc76 100644 (file)
@@ -22,5 +22,6 @@
 
 #include <isc/backtrace.h>
 
-const int isc__backtrace_nsymbols = 0;
-const isc_backtrace_symmap_t isc__backtrace_symtable[] = { { NULL, "" } };
+LIBISC_EXTERNAL_DATA const int isc__backtrace_nsymbols = 0;
+LIBISC_EXTERNAL_DATA const
+       isc_backtrace_symmap_t isc__backtrace_symtable[] = { { NULL, "" } };
index cf033a919b80ae072013f4c9cae0e3010e05d054..4dad07734281092e8b542a680b72627b85657cdb 100644 (file)
@@ -46,8 +46,9 @@ struct isc_backtrace_symmap {
        const char      *symbol;
 };
 
-extern const int isc__backtrace_nsymbols;
-extern const isc_backtrace_symmap_t isc__backtrace_symtable[];
+LIBISC_EXTERNAL_DATA extern const int isc__backtrace_nsymbols;
+LIBISC_EXTERNAL_DATA extern const
+       isc_backtrace_symmap_t isc__backtrace_symtable[];
 
 /***
  *** Functions
index 4e112f27223a2576853057827f906118a1090c87..32717f5b08742098dea7dc481df4d7dcb0046750 100644 (file)
@@ -28,8 +28,6 @@ isc__appctx_destroy
 isc__appctx_setsocketmgr
 isc__appctx_settaskmgr
 isc__appctx_settimermgr
-isc__backtrace_nsymbols
-isc__backtrace_symtable
 isc__buffer_activeregion
 isc__buffer_add
 isc__buffer_availableregion
@@ -195,7 +193,6 @@ isc_dir_init
 isc_dir_open
 isc_dir_read
 isc_dir_reset
-isc_dscp_check_value
 isc_entropy_addcallbacksample
 isc_entropy_addsample
 isc_entropy_attach
@@ -804,6 +801,8 @@ syslog
 
 EXPORTS
 
+isc__backtrace_nsymbols                DATA
+isc__backtrace_symtable                DATA
 isc_bind9                      DATA
 isc_commandline_argument       DATA
 isc_commandline_errprint       DATA
@@ -811,9 +810,12 @@ isc_commandline_index              DATA
 isc_commandline_option         DATA
 isc_commandline_progname       DATA
 isc_commandline_reset          DATA
+isc_dscp_check_value           DATA
 isc_hashctx                    DATA
 isc_mem_debugging              DATA
+isc_msgcat                     DATA
 @IF PKCS11
+pk11_msgcat                    DATA
 pk11_verbose_init              DATA
 @END PKCS11
 @END NOLONGER
index 908e60e9dd8666419b345c48bf63b0a6f355d31f..1bf9bfe689c9f064b3c867385229864c8edd0c1c 100644 (file)
@@ -74,7 +74,7 @@
  * other than -1, we check to make sure DSCP values match it, and
  * assert if not.
  */
-int isc_dscp_check_value = -1;
+LIBISC_EXTERNAL_DATA int isc_dscp_check_value = -1;
 
 /*
  * How in the world can Microsoft exist with APIs like this?
index 5d32a5283062ea324db7417fe43e8f474ebf5103..7a06b9a4470bb8dc9cd561d1f7ef2e1837974e41 100644 (file)
@@ -64,3 +64,7 @@ isccc_symtab_lookup
 isccc_symtab_define
 isccc_symtab_undefine
 isccc_symtab_foreach
+
+; Exported Data
+
+;isccc_msgcat
index 70fde68e1392555a510b9c0b8a0379f8ae39efc7..c25c5fde0c86e7e7cd19df1a9104c3704c8bf1cb 100644 (file)
@@ -103,18 +103,21 @@ parser_complain(cfg_parser_t *pctx, isc_boolean_t is_warning,
  * not need a union member).
  */
 
-cfg_rep_t cfg_rep_uint32 = { "uint32", free_noop };
-cfg_rep_t cfg_rep_uint64 = { "uint64", free_noop };
-cfg_rep_t cfg_rep_string = { "string", free_string };
-cfg_rep_t cfg_rep_boolean = { "boolean", free_noop };
-cfg_rep_t cfg_rep_map = { "map", free_map };
-cfg_rep_t cfg_rep_list = { "list", free_list };
-cfg_rep_t cfg_rep_tuple = { "tuple", free_tuple };
-cfg_rep_t cfg_rep_sockaddr = { "sockaddr", free_noop };
-cfg_rep_t cfg_rep_netprefix = { "netprefix", free_noop };
-cfg_rep_t cfg_rep_void = { "void", free_noop };
-cfg_rep_t cfg_rep_fixedpoint = { "fixedpoint", free_noop };
-cfg_rep_t cfg_rep_percentage = { "percentage", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_uint32 = { "uint32", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_uint64 = { "uint64", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_string = { "string", free_string };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_boolean = { "boolean", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_map = { "map", free_map };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_list = { "list", free_list };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_tuple = { "tuple", free_tuple };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_sockaddr = { "sockaddr", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_netprefix =
+       { "netprefix", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_void = { "void", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_fixedpoint =
+       { "fixedpoint", free_noop };
+LIBISCCFG_EXTERNAL_DATA cfg_rep_t cfg_rep_percentage =
+       { "percentage", free_noop };
 
 /*
  * Configuration type definitions.
@@ -638,7 +641,7 @@ cfg_obj_isvoid(const cfg_obj_t *obj) {
        return (ISC_TF(obj->type->rep == &cfg_rep_void));
 }
 
-cfg_type_t cfg_type_void = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_void = {
        "void", cfg_parse_void, cfg_print_void, cfg_doc_void, &cfg_rep_void,
        NULL };
 
@@ -694,7 +697,7 @@ cfg_obj_aspercentage(const cfg_obj_t *obj) {
        return (obj->value.uint32);
 }
 
-cfg_type_t cfg_type_percentage = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_percentage = {
        "percentage", cfg_parse_percentage, cfg_print_percentage,
        cfg_doc_terminal, &cfg_rep_percentage, NULL
 };
@@ -774,7 +777,7 @@ cfg_obj_asfixedpoint(const cfg_obj_t *obj) {
        return (obj->value.uint32);
 }
 
-cfg_type_t cfg_type_fixedpoint = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_fixedpoint = {
        "fixedpoint", cfg_parse_fixedpoint, cfg_print_fixedpoint,
        cfg_doc_terminal, &cfg_rep_fixedpoint, NULL
 };
@@ -837,7 +840,7 @@ cfg_obj_asuint32(const cfg_obj_t *obj) {
        return (obj->value.uint32);
 }
 
-cfg_type_t cfg_type_uint32 = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_uint32 = {
        "integer", cfg_parse_uint32, cfg_print_uint32, cfg_doc_terminal,
        &cfg_rep_uint32, NULL
 };
@@ -866,7 +869,7 @@ cfg_print_uint64(cfg_printer_t *pctx, const cfg_obj_t *obj) {
        cfg_print_cstr(pctx, buf);
 }
 
-cfg_type_t cfg_type_uint64 = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_uint64 = {
        "64_bit_integer", NULL, cfg_print_uint64, cfg_doc_terminal,
        &cfg_rep_uint64, NULL
 };
@@ -1092,19 +1095,19 @@ cfg_obj_asstring(const cfg_obj_t *obj) {
 }
 
 /* Quoted string only */
-cfg_type_t cfg_type_qstring = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_qstring = {
        "quoted_string", cfg_parse_qstring, print_qstring, cfg_doc_terminal,
        &cfg_rep_string, NULL
 };
 
 /* Unquoted string only */
-cfg_type_t cfg_type_ustring = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_ustring = {
        "string", parse_ustring, cfg_print_ustring, cfg_doc_terminal,
        &cfg_rep_string, NULL
 };
 
 /* Any string (quoted or unquoted); printed with quotes */
-cfg_type_t cfg_type_astring = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_astring = {
        "string", cfg_parse_astring, print_qstring, cfg_doc_terminal,
        &cfg_rep_string, NULL
 };
@@ -1113,7 +1116,7 @@ cfg_type_t cfg_type_astring = {
  * Any string (quoted or unquoted); printed with quotes.
  * If CFG_PRINTER_XKEY is set when printing the string will be '?' out.
  */
-cfg_type_t cfg_type_sstring = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_sstring = {
        "string", cfg_parse_sstring, print_sstring, cfg_doc_terminal,
        &cfg_rep_string, NULL
 };
@@ -1123,7 +1126,7 @@ cfg_type_t cfg_type_sstring = {
  * text to dynamic library or external application. Checked for
  * bracket balance, but not otherwise parsed.
  */
-cfg_type_t cfg_type_bracketed_text = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_bracketed_text = {
        "bracketed_text", parse_btext, print_btext, doc_btext,
        &cfg_rep_string, NULL
 };
@@ -1192,7 +1195,7 @@ cfg_print_boolean(cfg_printer_t *pctx, const cfg_obj_t *obj) {
                cfg_print_cstr(pctx, "no");
 }
 
-cfg_type_t cfg_type_boolean = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_boolean = {
        "boolean", cfg_parse_boolean, cfg_print_boolean, cfg_doc_terminal,
        &cfg_rep_boolean, NULL
 };
@@ -1940,7 +1943,7 @@ parse_token(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) {
        return (result);
 }
 
-cfg_type_t cfg_type_token = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_token = {
        "token", parse_token, cfg_print_ustring, cfg_doc_terminal,
        &cfg_rep_string, NULL
 };
@@ -1989,7 +1992,7 @@ parse_unsupported(cfg_parser_t *pctx, const cfg_type_t *type, cfg_obj_t **ret) {
        return (result);
 }
 
-cfg_type_t cfg_type_unsupported = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_unsupported = {
        "unsupported", parse_unsupported, cfg_print_spacelist, cfg_doc_terminal,
        &cfg_rep_list, NULL
 };
@@ -2233,27 +2236,27 @@ cfg_doc_netaddr(cfg_printer_t *pctx, const cfg_type_t *type) {
                cfg_print_cstr(pctx, " )");
 }
 
-cfg_type_t cfg_type_netaddr = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netaddr = {
        "netaddr", parse_netaddr, cfg_print_sockaddr, cfg_doc_netaddr,
        &cfg_rep_sockaddr, &netaddr_flags
 };
 
-cfg_type_t cfg_type_netaddr4 = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netaddr4 = {
        "netaddr4", parse_netaddr, cfg_print_sockaddr, cfg_doc_netaddr,
        &cfg_rep_sockaddr, &netaddr4_flags
 };
 
-cfg_type_t cfg_type_netaddr4wild = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netaddr4wild = {
        "netaddr4wild", parse_netaddr, cfg_print_sockaddr, cfg_doc_netaddr,
        &cfg_rep_sockaddr, &netaddr4wild_flags
 };
 
-cfg_type_t cfg_type_netaddr6 = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netaddr6 = {
        "netaddr6", parse_netaddr, cfg_print_sockaddr, cfg_doc_netaddr,
        &cfg_rep_sockaddr, &netaddr6_flags
 };
 
-cfg_type_t cfg_type_netaddr6wild = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netaddr6wild = {
        "netaddr6wild", parse_netaddr, cfg_print_sockaddr, cfg_doc_netaddr,
        &cfg_rep_sockaddr, &netaddr6wild_flags
 };
@@ -2339,7 +2342,7 @@ cfg_obj_asnetprefix(const cfg_obj_t *obj, isc_netaddr_t *netaddr,
        *prefixlen = obj->value.netprefix.prefixlen;
 }
 
-cfg_type_t cfg_type_netprefix = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_netprefix = {
        "netprefix", cfg_parse_netprefix, print_netprefix, cfg_doc_terminal,
        &cfg_rep_netprefix, NULL
 };
@@ -2397,14 +2400,14 @@ parse_sockaddrsub(cfg_parser_t *pctx, const cfg_type_t *type,
 }
 
 static unsigned int sockaddr_flags = CFG_ADDR_V4OK | CFG_ADDR_V6OK;
-cfg_type_t cfg_type_sockaddr = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_sockaddr = {
        "sockaddr", cfg_parse_sockaddr, cfg_print_sockaddr, cfg_doc_sockaddr,
        &cfg_rep_sockaddr, &sockaddr_flags
 };
 
 static unsigned int sockaddrdscp_flags = CFG_ADDR_V4OK | CFG_ADDR_V6OK |
                                         CFG_ADDR_DSCPOK;
-cfg_type_t cfg_type_sockaddrdscp = {
+LIBISCCFG_EXTERNAL_DATA cfg_type_t cfg_type_sockaddrdscp = {
        "sockaddr", cfg_parse_sockaddr, cfg_print_sockaddr, cfg_doc_sockaddr,
        &cfg_rep_sockaddr, &sockaddrdscp_flags
 };
index 092c3c0ffb2273633c532c9c5f0e3d41241d6f7f..a54780bc26b6e67436403c0fa0945b235621d022 100644 (file)
@@ -121,4 +121,37 @@ cfg_ungettoken
 
 ; Exported Data
 
+;cfg_rep_boolean
+;cfg_rep_fixedpoint
+;cfg_rep_list
+;cfg_rep_map
+;cfg_rep_netprefix
+;cfg_rep_percentage
+;cfg_rep_sockaddr
+;cfg_rep_string
+;cfg_rep_tuple
+;cfg_rep_uint32
+;cfg_rep_uint64
+;cfg_rep_void
+;cfg_type_astring
+;cfg_type_boolean
+;cfg_type_bracketed_text
+;cfg_type_fixedpoint
+;cfg_type_netaddr
+;cfg_type_netaddr4
+;cfg_type_netaddr4wild
+;cfg_type_netaddr6
+;cfg_type_netaddr6wild
+;cfg_type_netprefix
+;cfg_type_percentage
+;cfg_type_qstring
 ;cfg_type_rndcconf
+;cfg_type_sockaddr
+;cfg_type_sockaddrdscp
+;cfg_type_sstring
+;cfg_type_token
+;cfg_type_uint32
+;cfg_type_uint64
+;cfg_type_unsupported
+;cfg_type_ustring
+;cfg_type_void
index 43af552e9f5d7deffc8dbe9dc0c4bee927ae2c14..5b7b03e25026bee28575c74e28fdd6cf6d789cbe 100644 (file)
@@ -606,7 +606,7 @@ t_getdate(char *buf, size_t buflen) {
 /*
  * Some generally used utilities.
  */
-struct dns_errormap {
+static const struct dns_errormap {
        isc_result_t    result;
        const char *text;
 } dns_errormap[] = {
@@ -660,8 +660,8 @@ struct dns_errormap {
 isc_result_t
 t_dns_result_fromtext(char *name) {
 
-       isc_result_t            result;
-       struct dns_errormap     *pmap;
+       isc_result_t                    result;
+       const struct dns_errormap       *pmap;
 
        result = ISC_R_UNEXPECTED;
 
@@ -678,7 +678,7 @@ t_dns_result_fromtext(char *name) {
        return (result);
 }
 
-struct dc_method_map {
+static const struct dc_method_map {
        unsigned int    dc_method;
        const char      *text;
 } dc_method_map[] = {
@@ -691,8 +691,8 @@ struct dc_method_map {
 
 unsigned int
 t_dc_method_fromtext(char *name) {
-       unsigned int            dc_method;
-       struct dc_method_map    *pmap;
+       unsigned int                    dc_method;
+       const struct dc_method_map      *pmap;
 
        dc_method = DNS_COMPRESS_NONE;