From owner-freebsd-bugs@FreeBSD.ORG Tue Mar 25 23:00:33 2003 Return-Path: Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BD2AE37B408 for ; Tue, 25 Mar 2003 23:00:32 -0800 (PST) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 199C443F75 for ; Tue, 25 Mar 2003 23:00:32 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.6/8.12.6) with ESMTP id h2Q70VNS045084 for ; Tue, 25 Mar 2003 23:00:31 -0800 (PST) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.6/8.12.6/Submit) id h2Q70V9U045083; Tue, 25 Mar 2003 23:00:31 -0800 (PST) Date: Tue, 25 Mar 2003 23:00:31 -0800 (PST) Message-Id: <200303260700.h2Q70V9U045083@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.org From: David J Duchscher X-Spam-Status: No, hits=0.0 required=5.0 tests=none version=2.50 X-Spam-Level: X-Spam-Checker-Version: SpamAssassin 2.50 (1.173-2003-02-20-exp) Subject: Re: misc/50299: Resolver rejects hostnames with underscores X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list Reply-To: David J Duchscher List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 26 Mar 2003 07:00:35 -0000 X-List-Received-Date: Wed, 26 Mar 2003 07:00:35 -0000 The following reply was made to PR misc/50299; it has been noted by GNATS. From: David J Duchscher To: freebsd-gnats-submit@FreeBSD.org, marius@marius.org Cc: Subject: Re: misc/50299: Resolver rejects hostnames with underscores Date: Wed, 26 Mar 2003 00:42:05 -0600 Here is a patch that makes this behavior optional via the options directive in the resolv.conf file. DaveD diff -ru ../src.orig/include/resolv.h ./include/resolv.h --- ../src.orig/include/resolv.h Tue Mar 25 20:41:46 2003 +++ ./include/resolv.h Wed Mar 26 00:18:08 2003 @@ -150,6 +150,7 @@ #define RES_NOALIASES 0x00001000 /* shuts off HOSTALIASES feature */ #define RES_USE_INET6 0x00002000 /* use/map IPv6 in gethostbyname() */ #define RES_NOTLDQUERY 0x00004000 /* Don't query TLD names */ +#define RES_ALLOWUSCORE 0x00008000 /* Alllow underscore in hostname */ /* KAME extensions: use higher bit to avoid conflict with ISC use */ #define RES_USE_EDNS0 0x40000000 /* use EDNS0 */ diff -ru ../src.orig/lib/libc/net/res_comp.c ./lib/libc/net/res_comp.c --- ../src.orig/lib/libc/net/res_comp.c Tue Mar 25 20:39:27 2003 +++ ./lib/libc/net/res_comp.c Wed Mar 26 00:17:33 2003 @@ -142,6 +142,7 @@ */ #define PERIOD 0x2e #define hyphenchar(c) ((c) == 0x2d) +#define uscorechar(c) ((c) == 0x5f) #define bslashchar(c) ((c) == 0x5c) #define periodchar(c) ((c) == PERIOD) #define asterchar(c) ((c) == 0x2a) @@ -171,8 +172,13 @@ if (!borderchar(ch)) return (0); } else { - if (!middlechar(ch)) - return (0); + if (_res.options & RES_ALLOWUSCORE) { + if (!middlechar(ch) && !uscorechar(ch)) + return(0); + } else { + if (!middlechar(ch)) + return (0); + } } ppch = pch, pch = ch, ch = nch; } diff -ru ../src.orig/lib/libc/net/res_init.c ./lib/libc/net/res_init.c --- ../src.orig/lib/libc/net/res_init.c Tue Mar 25 20:39:27 2003 +++ ./lib/libc/net/res_init.c Wed Mar 26 00:17:52 2003 @@ -539,6 +539,8 @@ _res.options |= RES_INSECURE2; } else if (!strncmp(cp, "no_tld_query", sizeof("no_tld_query") - 1)) { _res.options |= RES_NOTLDQUERY; + } else if (!strncmp(cp, "allow_underscore", sizeof("allow_underscore") - 1)) { + _res.options |= RES_ALLOWUSCORE; } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) { _res.options |= RES_USE_EDNS0; } else { diff -ru ../src.orig/share/man/man5/resolver.5 ./share/man/man5/resolver.5 --- ../src.orig/share/man/man5/resolver.5 Tue Mar 25 20:42:08 2003 +++ ./share/man/man5/resolver.5 Wed Mar 26 00:30:51 2003 @@ -125,7 +125,7 @@ .Sy option is one of the following: .Pp -.Bl -tag -width no_tld_query +.Bl -tag -width allow_underscore .It Sy debug sets .Dv RES_DEBUG @@ -154,6 +154,11 @@ and .Sy search rules with the given name. +.It Sy allow_underscore +tells the resolver to allow underscores in hostsnames. Normally the +resolver will filter out hostnames that do not conform to RFC 952. +This extends the allowed set of characters in the middle of the +hostname to include the underscore character. .El .Pp Options may also be specified as a space or tab separated list using the