From owner-freebsd-current@FreeBSD.ORG Wed Jul 4 16:41:11 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 4D09316A41F; Wed, 4 Jul 2007 16:41:11 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from cyrus.watson.org (cyrus.watson.org [209.31.154.42]) by mx1.freebsd.org (Postfix) with ESMTP id 251BB13C484; Wed, 4 Jul 2007 16:41:11 +0000 (UTC) (envelope-from rwatson@FreeBSD.org) Received: from fledge.watson.org (fledge.watson.org [209.31.154.41]) by cyrus.watson.org (Postfix) with ESMTP id D4B7D47050; Wed, 4 Jul 2007 12:41:10 -0400 (EDT) Date: Wed, 4 Jul 2007 17:41:10 +0100 (BST) From: Robert Watson X-X-Sender: robert@fledge.watson.org To: "Sean C. Farley" In-Reply-To: <20070704101026.O77978@thor.farley.org> Message-ID: <20070704173905.T67251@fledge.watson.org> References: <1183557221.1799.16.camel@genius.i.cz> <20070704143642.GA31254@nagual.pp.ru> <20070704150312.GB31683@nagual.pp.ru> <20070704101026.O77978@thor.farley.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: Andrey Chernov , freebsd-current , 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: Wed, 04 Jul 2007 16:41:11 -0000 On Wed, 4 Jul 2007, Sean C. Farley wrote: > On Wed, 4 Jul 2007, Andrey Chernov wrote: > >> On Wed, Jul 04, 2007 at 06:36:42PM +0400, Andrey Chernov wrote: >>> 2) "s" may point to getenv()-provided value there. So just modifying it >>> directly followed by setenv() call will make things inconsistent. >>> >>> 3) In my version of patch there was savestr() which copy arg to avoid this >>> situation. >>> >>> Fix will be to restore var.c to mine variant 1.34 >> >> You may also try this patch against var.c 1.36: > > Andrey, thank you. > > Sorry for the bug everyone. Here is a patch that should fix it: > http://www.farley.org/freebsd/tmp/setenv/sh.patch I assume I'm not the only person with this concern, but -- shouldn't we worry that subtle changes in the semantics of very basic and widely used system APIs might not result in more of exactly this sort of problem? While I'm supportive of the general aim of improving the portability of our APIs, environmental variables are managed by large numbers of programs in rather subtle ways--do we generally feel that this recent work will decrease or increase the number of subtle bugs? After all, we've changed long-standing semantics for the APIs... Robert N M Watson Computer Laboratory University of Cambridge