This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [patch] Error on setenv(..., NULL, ...)
- From: Paul Pluzhnikov <ppluzhnikov at google dot com>
- To: Joseph Myers <joseph at codesourcery dot com>
- Cc: GLIBC Devel <libc-alpha at sourceware dot org>, Roland McGrath <roland at hack dot frob dot com>, mtk at man7 dot org
- Date: Wed, 11 Mar 2015 10:40:44 -0700
- Subject: Re: [patch] Error on setenv(..., NULL, ...)
- Authentication-results: sourceware.org; auth=none
- References: <CALoOobNSbWUkd_i-L6U0ovbqPYnJY-h=ftX1K61yb19pmJj6aw at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1503111712240 dot 30954 at digraph dot polyomino dot org dot uk>
On Wed, Mar 11, 2015 at 10:14 AM, Joseph Myers <joseph@codesourcery.com> wrote:
> So, if it's undefined behavior to pass NULL here, any detection should
> take the form of an assertion.
Assert would be inconsistent with the other checks: it surely is just as
undefined to pass a NULL name.
I am fine with
assert (name != NULL && *name != '\0' && value != NULL);
if (strchr (name, '=') != NULL)
{
__set_errno (EINVAL);
return -1;
}
...
but this may turn out to be too drastic.
The original check was added here:
Author: Roland McGrath <roland@gnu.org>
Date: Wed Jun 9 18:33:36 2004 +0000
* sysdeps/generic/setenv.c (setenv): Return -1/EINVAL if name is
NULL, "" or contains '=' character in it. Reported by
Michael T Kerrisk <mtk-lists@gmx.net>.
* stdlib/tst-environ.c: Include errno.h.
(main): Add tests for these arguments to setenv/unsetenv.
+cc Roland, Michael
Thread starts here: https://sourceware.org/ml/libc-alpha/2015-03/msg00449.html
--
Paul Pluzhnikov