From owner-freebsd-standards@FreeBSD.ORG Tue Oct 2 16:10:17 2012 Return-Path: Delivered-To: freebsd-standards@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id F2929106566C for ; Tue, 2 Oct 2012 16:10:16 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id C40D78FC0C for ; Tue, 2 Oct 2012 16:10:16 +0000 (UTC) Received: from freefall.freebsd.org (localhost [127.0.0.1]) by freefall.freebsd.org (8.14.5/8.14.5) with ESMTP id q92GAG0g035283 for ; Tue, 2 Oct 2012 16:10:16 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.5/8.14.5/Submit) id q92GAG5t035278; Tue, 2 Oct 2012 16:10:16 GMT (envelope-from gnats) Date: Tue, 2 Oct 2012 16:10:16 GMT Message-Id: <201210021610.q92GAG5t035278@freefall.freebsd.org> To: freebsd-standards@FreeBSD.org From: Andrey Chernov Cc: Subject: Re: standards/172273: unsetenv(3) issue according to autoconf X-BeenThere: freebsd-standards@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Andrey Chernov List-Id: Standards compliance List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Oct 2012 16:10:17 -0000 The following reply was made to PR standards/172273; it has been noted by GNATS. From: Andrey Chernov To: Ed Maste Cc: FreeBSD-gnats-submit@FreeBSD.org Subject: Re: standards/172273: unsetenv(3) issue according to autoconf Date: Tue, 02 Oct 2012 20:08:31 +0400 This is a multi-part message in MIME format. --------------050703020706000604050704 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit On 02.10.2012 18:41, Ed Maste wrote: >> Number: 172273 >> Category: standards >> Synopsis: unsetenv(3) issue according to autoconf >> Confidential: no >> Severity: non-critical >> Priority: low >> Responsible: freebsd-standards >> State: open >> Quarter: >> Keywords: >> Date-Required: >> Class: sw-bug >> Submitter-Id: current-users >> Arrival-Date: Tue Oct 02 14:50:10 UTC 2012 >> Closed-Date: >> Last-Modified: >> Originator: Ed Maste >> Release: FreeBSD 9.1-PRERELEASE amd64 >> Organization: > FreeBSD >> Environment: > FreeBSD feynman 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #18 r240994M: Thu Sep 27 09:08:57 EDT 2012 emaste@feynman:/data2/emaste/obj/home/emaste/src/9/sys/TEST amd64 > > GNU autoconf's unsetenv test fails on 9.1 - see test case below. > > >> Description: >> How-To-Repeat: > > The autoconf test is reproduced below - the 'return 3' is the failing line > > > #include > #include > extern char **environ; > > int main(int argc, char *argv[]) > { > char entry1[] = "a=1"; > char entry2[] = "b=2"; > char *env[] = { entry1, entry2, NULL }; > if (putenv ((char *) "a=1")) return 1; > if (putenv (entry2)) return 2; > entry2[0] = 'a'; > unsetenv ("a"); > if (getenv ("a")) return 3; > if (!unsetenv ("") || errno != EINVAL) return 4; > entry2[0] = 'b'; > environ = env; > if (!getenv ("a")) return 5; > entry2[0] = 'a'; > unsetenv ("a"); > if (getenv ("a")) return 6; > return 0; > } > >> Fix: > Attached simple patch should fix this issue (failing on test 3). --------------050703020706000604050704 Content-Type: text/plain; charset=windows-1251; name="getenv.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="getenv.patch" --- getenv.c.bak 2012-10-02 20:01:33.000000000 +0400 +++ getenv.c 2012-10-02 20:03:33.000000000 +0400 @@ -675,7 +675,8 @@ /* Deactivate specified variable. */ envNdx = envVarsTotal - 1; - if (__findenv(name, nameLen, &envNdx, true) != NULL) { + /* Remove all occurences */ + while (__findenv(name, nameLen, &envNdx, true) != NULL) { envVars[envNdx].active = false; if (envVars[envNdx].putenv) __remove_putenv(envNdx); --------------050703020706000604050704--