From owner-freebsd-current@FreeBSD.ORG Mon Jul 9 01:40:33 2007 Return-Path: X-Original-To: freebsd-current@FreeBSD.org Delivered-To: freebsd-current@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 3B33716A469; Mon, 9 Jul 2007 01:40:33 +0000 (UTC) (envelope-from scf@FreeBSD.org) Received: from mail.farley.org (farley.org [67.64.95.201]) by mx1.freebsd.org (Postfix) with ESMTP id E916413C46C; Mon, 9 Jul 2007 01:40:32 +0000 (UTC) (envelope-from scf@FreeBSD.org) Received: from thor.farley.org (thor.farley.org [192.168.1.5]) by mail.farley.org (8.14.1/8.14.1) with ESMTP id l691fc6u006363; Sun, 8 Jul 2007 20:41:38 -0500 (CDT) (envelope-from scf@FreeBSD.org) Date: Sun, 8 Jul 2007 20:40:11 -0500 (CDT) From: "Sean C. Farley" To: Andrey Chernov In-Reply-To: <20070708183823.GA91359@nagual.pp.ru> Message-ID: <20070708203635.A14065@thor.farley.org> References: <20070705115816.GA50506@nagual.pp.ru> <20070705105922.F98700@thor.farley.org> <20070707130859.GA96605@nagual.pp.ru> <20070707131359.GB96605@nagual.pp.ru> <20070707133102.C14065@thor.farley.org> <20070707191835.GA4368@nagual.pp.ru> <20070707205410.B14065@thor.farley.org> <20070708020940.GA80166@nagual.pp.ru> <20070708171727.GA90490@nagual.pp.ru> <20070708125905.F14065@thor.farley.org> <20070708183823.GA91359@nagual.pp.ru> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed X-Spam-Status: No, score=-4.4 required=5.0 tests=ALL_TRUSTED,AWL,BAYES_00 autolearn=ham version=3.2.1 X-Spam-Checker-Version: SpamAssassin 3.2.1 (2007-05-02) on mail.farley.org Cc: freebsd-current , Robert Watson , Michal Mertl Subject: Re: Environment handling broken in /bin/sh with changes to {get,set,put}env() X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 09 Jul 2007 01:40:33 -0000 On Sun, 8 Jul 2007, Andrey Chernov wrote: > On Sun, Jul 08, 2007 at 01:14:31PM -0500, Sean C. Farley wrote: *snip* >>> Could you please make setenv() wrapper like that to avoid modifying >>> merged environ in the middle? >>> __lsetenv(str, str_len, value) >> >> I could add this as a feature later. Unfortunately, unless I can >> lock the use of environ, an application could do this even with the >> 6-STABLE version of *env() functions. I have been pondering about >> thread-safety in a future release of these functions (8-CURRENT), but >> it may not be possible since environ is exposed. > > Even in case it may happens with 6-STABLE, we better not repeat the > way lead to mistakes again :) Your interpretation of the specification is correct. My latest patch should apply. I changed getenv() to never change environ. If it detects that environ was replaced, it falls back to returning the value from there. Only setenv(), unsetenv() and putenv() will alter environ. How does it look to you? Sean -- scf@FreeBSD.org