From owner-freebsd-bugs@FreeBSD.ORG Wed Feb 13 03:50:04 2013 Return-Path: Delivered-To: freebsd-bugs@smarthost.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 525F3E04 for ; Wed, 13 Feb 2013 03:50:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:1900:2254:206c::16:87]) by mx1.freebsd.org (Postfix) with ESMTP id 366478AE for ; Wed, 13 Feb 2013 03:50:04 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.6/8.14.6) with ESMTP id r1D3o4iZ049135 for ; Wed, 13 Feb 2013 03:50:04 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.6/8.14.6/Submit) id r1D3o46U049134; Wed, 13 Feb 2013 03:50:04 GMT (envelope-from gnats) Resent-Date: Wed, 13 Feb 2013 03:50:04 GMT Resent-Message-Id: <201302130350.r1D3o46U049134@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Landon Fuller Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id E9F38DD3 for ; Wed, 13 Feb 2013 03:45:42 +0000 (UTC) (envelope-from nobody@FreeBSD.org) Received: from red.freebsd.org (red.freebsd.org [IPv6:2001:4f8:fff6::22]) by mx1.freebsd.org (Postfix) with ESMTP id B7DF6892 for ; Wed, 13 Feb 2013 03:45:42 +0000 (UTC) Received: from red.freebsd.org (localhost [127.0.0.1]) by red.freebsd.org (8.14.5/8.14.5) with ESMTP id r1D3jf4L064764 for ; Wed, 13 Feb 2013 03:45:41 GMT (envelope-from nobody@red.freebsd.org) Received: (from nobody@localhost) by red.freebsd.org (8.14.5/8.14.5/Submit) id r1D3jfX4064763; Wed, 13 Feb 2013 03:45:41 GMT (envelope-from nobody) Message-Id: <201302130345.r1D3jfX4064763@red.freebsd.org> Date: Wed, 13 Feb 2013 03:45:41 GMT From: Landon Fuller To: freebsd-gnats-submit@FreeBSD.org X-Send-Pr-Version: www-3.1 Subject: misc/176093: [patch] Fix resolver support for '_' character in hostnames X-BeenThere: freebsd-bugs@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 13 Feb 2013 03:50:04 -0000 >Number: 176093 >Category: misc >Synopsis: [patch] Fix resolver support for '_' character in hostnames >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Wed Feb 13 03:50:01 UTC 2013 >Closed-Date: >Last-Modified: >Originator: Landon Fuller >Release: 9.1-RELEASE >Organization: >Environment: FreeBSD directory2 9.1-RELEASE FreeBSD 9.1-RELEASE #0 r243826: Tue Dec 4 06:55:39 UTC 2012 root@obrian.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC i386 >Description: Back in 2008, the libc resolver was modified to accept Microsoft's non-standard use of '_' in host names: http://svnweb.freebsd.org/base?view=revision&revision=176325 The fix appears to be incomplete, as it only covered the case where an underscore occurs within a domain component (eg, 'example_name', rather than at the beginning or end. The attached patch adds support for '_' occurring at the beginning, middle, or end of a name component. This style of name is required by AD, and by extension, by Samba4; this patch fixes issues with samba4 replication on FreeBSD. >How-To-Repeat: Try resolving a name containing a leading '_', such as 'gc._msdcs.example.org' >Fix: See attached patch Patch attached with submission follows: --- lib/libc/resolv/res_comp.c.orig 2013-02-12 21:50:31.000000000 -0500 +++ lib/libc/resolv/res_comp.c 2013-02-12 21:51:05.000000000 -0500 @@ -147,12 +147,12 @@ || ((c) >= 0x61 && (c) <= 0x7a)) #define digitchar(c) ((c) >= 0x30 && (c) <= 0x39) -#define borderchar(c) (alphachar(c) || digitchar(c)) #ifdef RES_ENFORCE_RFC1034 -#define middlechar(c) (borderchar(c) || hyphenchar(c)) +#define borderchar(c) (alphachar(c) || digitchar(c)) #else -#define middlechar(c) (borderchar(c) || hyphenchar(c) || underscorechar(c)) +#define borderchar(c) (alphachar(c) || digitchar(c) || underscorechar(c)) #endif +#define middlechar(c) (borderchar(c) || hyphenchar(c)) #define domainchar(c) ((c) > 0x20 && (c) < 0x7f) int >Release-Note: >Audit-Trail: >Unformatted: