Skip site navigation (1)Skip section navigation (2)
Date:      07 Aug 1998 21:32:31 +0200
From:      dag-erli@ifi.uio.no (Dag-Erling Coidan =?iso-8859-1?Q?Sm=F8rgrav?= )
To:        Archie Cobbs <archie@whistle.com>
Cc:        wollman@khavrinen.lcs.mit.edu (Garrett Wollman), freebsd-current@FreeBSD.ORG, bde@zeta.org.au, dg@root.com
Subject:   Re: memory leaks in libc
Message-ID:  <xzpogtw37w0.fsf@hrotti.ifi.uio.no>
In-Reply-To: Archie Cobbs's message of "Fri, 7 Aug 1998 10:37:26 -0700 (PDT)"
References:  <199808071737.KAA29957@bubba.whistle.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Archie Cobbs <archie@whistle.com> writes:
> Garrett Wollman writes:
> > No, you've missed the point entirely.  *Any program which does enough
> > playing around with the environment to be harmed by this memory leak
> > is using a totally inappropriate interface.*
> I disagree with that statement! And I base my disagreement not on
> conjecture but on experience.

There is only one situation in which you need to change the
environment: fork-and-exec, in which case it is trivial to construct a
fresh environment for your child process in a safe manner. If you're
not fork-and-execing, use program variables instead (which you
initialize with getenv()). If you're writing a shell and need to keep
track of lots of environment variables and pass them to your children,
you're in both situations at once; use a hash table for quick lookup
(you'll need it for variable substitution in command lines) and pass
execve() a list of pointers to the contents of your hash table.

> How can it possibly do this? The only way to get strftime() to
> acknowledge a change in timezone is to do something like this:
> 
>   unsetenv("TZ");
>   tzset();
>   setenv("TZ", "/etc/localtime", 1);
>   tzset();

Then strftime() should be taken out and shot.

Arguably, so should setenv(), but fixing setenv() will only hide the
symptoms of bad programming practice.

That said, I don't really see any reason *not* to commit your setenv()
replacement, if it works properly. It's just that there aren't really
any arguments *for* the commit, either.

DES
-- 
Dag-Erling Smørgrav - dag-erli@ifi.uio.no

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message



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