aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2004-06-09 18:33:36 +0000
committerRoland McGrath <roland@gnu.org>2004-06-09 18:33:36 +0000
commite17f8b6119eb64d126422eda8a18d577cbdc9976 (patch)
tree420d90c088e34223e18c9dc838264785555aab9e /sysdeps
parent616340ca428df8879afb1fcb8771d4e4050ff1e2 (diff)
downloadglibc-e17f8b6119eb64d126422eda8a18d577cbdc9976.tar
glibc-e17f8b6119eb64d126422eda8a18d577cbdc9976.tar.gz
glibc-e17f8b6119eb64d126422eda8a18d577cbdc9976.tar.bz2
glibc-e17f8b6119eb64d126422eda8a18d577cbdc9976.zip
* 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.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/generic/setenv.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sysdeps/generic/setenv.c b/sysdeps/generic/setenv.c
index a19771391d..48aaecffe0 100644
--- a/sysdeps/generic/setenv.c
+++ b/sysdeps/generic/setenv.c
@@ -265,6 +265,12 @@ setenv (name, value, replace)
const char *value;
int replace;
{
+ if (name == NULL || *name == '\0' || strchr (name, '=') != NULL)
+ {
+ __set_errno (EINVAL);
+ return -1;
+ }
+
return __add_to_environ (name, value, NULL, replace);
}