From owner-p4-projects@FreeBSD.ORG Fri Dec 14 22:25:04 2007 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id B671116A46C; Fri, 14 Dec 2007 22:25:04 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 7A76316A420 for ; Fri, 14 Dec 2007 22:25:04 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 58B7613C4E7 for ; Fri, 14 Dec 2007 22:25:04 +0000 (UTC) (envelope-from jb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.1/8.14.1) with ESMTP id lBEMP4SD037036 for ; Fri, 14 Dec 2007 22:25:04 GMT (envelope-from jb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.1/8.14.1/Submit) id lBEMP4pf037033 for perforce@freebsd.org; Fri, 14 Dec 2007 22:25:04 GMT (envelope-from jb@freebsd.org) Date: Fri, 14 Dec 2007 22:25:04 GMT Message-Id: <200712142225.lBEMP4pf037033@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jb@freebsd.org using -f From: John Birrell To: Perforce Change Reviews Cc: Subject: PERFORCE change 130898 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 14 Dec 2007 22:25:05 -0000 http://perforce.freebsd.org/chv.cgi?CH=130898 Change 130898 by jb@jb_freebsd1 on 2007/12/14 22:24:24 IF7 Affected files ... .. //depot/projects/dtrace7/src/lib/libc/nameser/ns_parse.c#2 integrate .. //depot/projects/dtrace7/src/lib/libc/resolv/res_data.c#2 integrate .. //depot/projects/dtrace7/src/lib/libc/resolv/res_init.c#2 integrate .. //depot/projects/dtrace7/src/sys/kern/init_main.c#4 edit .. //depot/projects/dtrace7/src/sys/kern/kern_proc.c#4 integrate .. //depot/projects/dtrace7/src/sys/kern/kern_thread.c#3 integrate .. //depot/projects/dtrace7/src/sys/sys/eventhandler.h#3 integrate Differences ... ==== //depot/projects/dtrace7/src/lib/libc/nameser/ns_parse.c#2 (text+ko) ==== @@ -16,8 +16,10 @@ */ #ifndef lint -static const char rcsid[] = "$Id: ns_parse.c,v 1.5.18.3 2005/10/11 00:25:10 marka Exp $"; +static const char rcsid[] = "$Id: ns_parse.c,v 1.5.18.4 2007/08/27 03:34:24 marka Exp $"; #endif +#include +__FBSDID("$FreeBSD: src/lib/libc/nameser/ns_parse.c,v 1.1.1.2.2.1 2007/12/14 20:32:13 ume Exp $"); /* Import. */ @@ -40,7 +42,7 @@ /* Macros. */ -#ifndef SOLARIS2 +#if !defined(SOLARIS2) || defined(__COVERITY__) #define RETERR(err) do { errno = (err); return (-1); } while (0) #else #define RETERR(err) \ ==== //depot/projects/dtrace7/src/lib/libc/resolv/res_data.c#2 (text+ko) ==== @@ -16,10 +16,10 @@ */ #if defined(LIBC_SCCS) && !defined(lint) -static const char rcsid[] = "$Id: res_data.c,v 1.3.18.1 2005/04/27 05:01:10 sra Exp $"; +static const char rcsid[] = "$Id: res_data.c,v 1.3.18.2 2007/09/14 05:35:47 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/resolv/res_data.c,v 1.4 2007/06/03 17:20:27 ume Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/resolv/res_data.c,v 1.4.2.1 2007/12/14 20:32:13 ume Exp $"); #include "port_before.h" ==== //depot/projects/dtrace7/src/lib/libc/resolv/res_init.c#2 (text+ko) ==== @@ -66,10 +66,10 @@ #if defined(LIBC_SCCS) && !defined(lint) static const char sccsid[] = "@(#)res_init.c 8.1 (Berkeley) 6/7/93"; -static const char rcsid[] = "$Id: res_init.c,v 1.16.18.5 2006/08/30 23:23:13 marka Exp $"; +static const char rcsid[] = "$Id: res_init.c,v 1.16.18.7 2007/07/09 01:52:58 marka Exp $"; #endif /* LIBC_SCCS and not lint */ #include -__FBSDID("$FreeBSD: src/lib/libc/resolv/res_init.c,v 1.6 2007/06/03 17:20:27 ume Exp $"); +__FBSDID("$FreeBSD: src/lib/libc/resolv/res_init.c,v 1.6.2.1 2007/12/14 20:32:13 ume Exp $"); #include "port_before.h" @@ -168,7 +168,9 @@ #endif int dots; union res_sockaddr_union u[2]; + int maxns = MAXNS; + RES_SET_H_ERRNO(statp, 0); if (statp->_u._ext.ext != NULL) res_ndestroy(statp); @@ -218,8 +220,22 @@ statp->_u._ext.ext->nsaddrs[0].sin = statp->nsaddr; strcpy(statp->_u._ext.ext->nsuffix, "ip6.arpa"); strcpy(statp->_u._ext.ext->nsuffix2, "ip6.int"); - } else - return (-1); + } else { + /* + * Historically res_init() rarely, if at all, failed. + * Examples and applications exist which do not check + * our return code. Furthermore several applications + * simply call us to get the systems domainname. So + * rather then immediately fail here we store the + * failure, which is returned later, in h_errno. And + * prevent the collection of 'nameserver' information + * by setting maxns to 0. Thus applications that fail + * to check our return code wont be able to make + * queries anyhow. + */ + RES_SET_H_ERRNO(statp, NETDB_INTERNAL); + maxns = 0; + } #ifdef RESOLVSORT statp->nsort = 0; #endif @@ -240,9 +256,9 @@ buf[0] = '.'; cp = strchr(buf, '.'); cp = (cp == NULL) ? buf : (cp + 1); - if (strlen(cp) >= sizeof(statp->defdname)) - goto freedata; - strcpy(statp->defdname, cp); + strncpy(statp->defdname, cp, + sizeof(statp->defdname) - 1); + statp->defdname[sizeof(statp->defdname) - 1] = '\0'; } } #endif /* SOLARIS2 */ @@ -348,7 +364,7 @@ continue; } /* read nameservers to query */ - if (MATCH(buf, "nameserver") && nserv < MAXNS) { + if (MATCH(buf, "nameserver") && nserv < maxns) { struct addrinfo hints, *ai; char sbuf[NI_MAXSERV]; const size_t minsiz = @@ -541,16 +557,7 @@ else if ((cp = getenv("RES_OPTIONS")) != NULL) res_setoptions(statp, cp, "env"); statp->options |= RES_INIT; - return (0); - -#ifdef SOLARIS2 - freedata: - if (statp->_u._ext.ext != NULL) { - free(statp->_u._ext.ext); - statp->_u._ext.ext = NULL; - } - return (-1); -#endif + return (statp->res_h_errno); } static void ==== //depot/projects/dtrace7/src/sys/kern/init_main.c#4 (text+ko) ==== @@ -42,7 +42,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.283.2.1 2007/12/06 14:19:42 kib Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/init_main.c,v 1.283.2.2 2007/12/14 13:41:08 rrs Exp $"); #include "opt_ddb.h" #include "opt_init_path.h" @@ -488,10 +488,15 @@ p->p_sysent->sv_maxuser); vmspace0.vm_map.pmap = vmspace_pmap(&vmspace0); + /*- + * call the init and ctor for the new thread and proc + * we wait to do this until all other structures + * are fairly sane. + */ + EVENTHANDLER_INVOKE(process_init, p); + EVENTHANDLER_INVOKE(thread_init, td); EVENTHANDLER_INVOKE(process_ctor, p); - EVENTHANDLER_INVOKE(process_init, p); EVENTHANDLER_INVOKE(thread_ctor, td); - EVENTHANDLER_INVOKE(thread_init, td); /* * Charge root for one process. ==== //depot/projects/dtrace7/src/sys/kern/kern_proc.c#4 (text+ko) ==== @@ -30,7 +30,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.252.2.1 2007/11/24 18:27:29 rwatson Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_proc.c,v 1.252.2.2 2007/12/14 13:41:08 rrs Exp $"); #include "opt_ktrace.h" #include "opt_kstack_pages.h" @@ -160,7 +160,7 @@ * freed, so you gotta do this here. */ if (((p->p_flag & P_KTHREAD) != 0) && (td->td_altkstack != 0)) - vm_thread_dispose_altkstack(td); + vm_thread_dispose_altkstack(td); EVENTHANDLER_INVOKE(process_dtor, p); if (p->p_ksi != NULL) KASSERT(! KSI_ONQ(p->p_ksi), ("SIGCHLD queue")); ==== //depot/projects/dtrace7/src/sys/kern/kern_thread.c#3 (text+ko) ==== @@ -27,7 +27,7 @@ */ #include -__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.255 2007/09/21 04:04:22 jeff Exp $"); +__FBSDID("$FreeBSD: src/sys/kern/kern_thread.c,v 1.255.2.1 2007/12/14 13:41:09 rrs Exp $"); #include #include @@ -128,7 +128,6 @@ */ td->td_critnest = 1; EVENTHANDLER_INVOKE(thread_ctor, td); - #ifdef AUDIT audit_thread_alloc(td); #endif ==== //depot/projects/dtrace7/src/sys/sys/eventhandler.h#3 (text+ko) ==== @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $FreeBSD: src/sys/sys/eventhandler.h,v 1.37 2007/04/13 08:38:48 pjd Exp $ + * $FreeBSD: src/sys/sys/eventhandler.h,v 1.37.2.1 2007/12/14 13:41:09 rrs Exp $ */ #ifndef SYS_EVENTHANDLER_H