Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 8 Jul 2007 20:40:11 -0500 (CDT)
From:      "Sean C. Farley" <scf@FreeBSD.org>
To:        Andrey Chernov <ache@nagual.pp.ru>
Cc:        freebsd-current <freebsd-current@FreeBSD.org>, Robert Watson <rwatson@FreeBSD.org>, Michal Mertl <mime@traveller.cz>
Subject:   Re: Environment handling broken in /bin/sh with changes to {get,set,put}env()
Message-ID:  <20070708203635.A14065@thor.farley.org>
In-Reply-To: <20070708183823.GA91359@nagual.pp.ru>
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>

next in thread | previous in thread | raw e-mail | index | archive | help
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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070708203635.A14065>