2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-08-31 14:35:26 +00:00

2141. [bug] dig/host should not be setting IDN_ASCCHECK (IDN

equivalent of LDH checks).  [RT #16609]
This commit is contained in:
Mark Andrews
2007-02-26 00:27:09 +00:00
parent 8363ddb32d
commit 5dcc67a0ff
4 changed files with 36 additions and 4 deletions

View File

@@ -1,3 +1,6 @@
2141. [bug] dig/host should not be setting IDN_ASCCHECK (IDN
equivalent of LDH checks). [RT #16609]
2140. [bug] libbind: missing unlock on pthread_key_create() 2140. [bug] libbind: missing unlock on pthread_key_create()
failures. [RT #16654] failures. [RT #16654]

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: dighost.c,v 1.299 2007/02/14 23:45:44 marka Exp $ */ /* $Id: dighost.c,v 1.300 2007/02/26 00:27:09 marka Exp $ */
/*! \file /*! \file
* \note * \note
@@ -144,6 +144,7 @@ static idn_result_t append_textname(char *name, const char *origin,
static void idn_check_result(idn_result_t r, const char *msg); static void idn_check_result(idn_result_t r, const char *msg);
#define MAXDLEN 256 #define MAXDLEN 256
int idnoptions = 0;
#endif #endif
/*% /*%
@@ -1816,7 +1817,7 @@ setup_lookup(dig_lookup_t *lookup) {
sizeof(utf8_textname)); sizeof(utf8_textname));
idn_check_result(mr, "append origin to textname"); idn_check_result(mr, "append origin to textname");
} }
mr = idn_encodename(IDN_LOCALMAP | IDN_NAMEPREP | IDN_ASCCHECK | mr = idn_encodename(idnoptions | IDN_LOCALMAP | IDN_NAMEPREP |
IDN_IDNCONV | IDN_LENCHECK, utf8_textname, IDN_IDNCONV | IDN_LENCHECK, utf8_textname,
idn_textname, sizeof(idn_textname)); idn_textname, sizeof(idn_textname));
idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); idn_check_result(mr, "convert UTF-8 textname to IDN encoding");

View File

@@ -15,13 +15,25 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: host.c,v 1.110 2006/05/23 04:38:28 marka Exp $ */ /* $Id: host.c,v 1.111 2007/02/26 00:27:09 marka Exp $ */
/*! \file */ /*! \file */
#include <config.h> #include <config.h>
#include <stdlib.h>
#include <limits.h> #include <limits.h>
#ifdef HAVE_LOCALE_H
#include <locale.h>
#endif
#ifdef WITH_IDN
#include <idn/result.h>
#include <idn/log.h>
#include <idn/resconf.h>
#include <idn/api.h>
#endif
#include <isc/app.h> #include <isc/app.h>
#include <isc/commandline.h> #include <isc/commandline.h>
#include <isc/netaddr.h> #include <isc/netaddr.h>
@@ -664,6 +676,9 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
lookup->rdtype != dns_rdatatype_axfr) lookup->rdtype != dns_rdatatype_axfr)
lookup->rdtype = rdtype; lookup->rdtype = rdtype;
lookup->rdtypeset = ISC_TRUE; lookup->rdtypeset = ISC_TRUE;
#ifdef WITH_IDN
idnoptions = 0;
#endif
if (rdtype == dns_rdatatype_axfr) { if (rdtype == dns_rdatatype_axfr) {
/* -l -t any -v */ /* -l -t any -v */
list_type = dns_rdatatype_any; list_type = dns_rdatatype_any;
@@ -672,6 +687,13 @@ parse_args(isc_boolean_t is_batchfile, int argc, char **argv) {
} else if (rdtype == dns_rdatatype_ixfr) { } else if (rdtype == dns_rdatatype_ixfr) {
lookup->ixfr_serial = serial; lookup->ixfr_serial = serial;
list_type = rdtype; list_type = rdtype;
#ifdef WITH_IDN
} else if (rdtype == dns_rdatatype_a ||
rdtype == dns_rdatatype_aaaa ||
rdtype == dns_rdatatype_mx) {
idnoptions = IDN_ASCCHECK;
list_type = rdtype;
#endif
} else } else
list_type = rdtype; list_type = rdtype;
list_addresses = ISC_FALSE; list_addresses = ISC_FALSE;
@@ -814,6 +836,9 @@ main(int argc, char **argv) {
ISC_LIST_INIT(search_list); ISC_LIST_INIT(search_list);
fatalexit = 1; fatalexit = 1;
#ifdef WITH_IDN
idnoptions = IDN_ASCCHECK;
#endif
debug("main()"); debug("main()");
progname = argv[0]; progname = argv[0];

View File

@@ -15,7 +15,7 @@
* PERFORMANCE OF THIS SOFTWARE. * PERFORMANCE OF THIS SOFTWARE.
*/ */
/* $Id: dig.h,v 1.101 2006/12/07 05:52:16 marka Exp $ */ /* $Id: dig.h,v 1.102 2007/02/26 00:27:09 marka Exp $ */
#ifndef DIG_H #ifndef DIG_H
#define DIG_H #define DIG_H
@@ -277,6 +277,9 @@ extern isc_boolean_t debugging, memdebugging;
extern char *progname; extern char *progname;
extern int tries; extern int tries;
extern int fatalexit; extern int fatalexit;
#ifdef WITH_IDN
extern int idnoptions;
#endif
/* /*
* Routines in dighost.c. * Routines in dighost.c.