Fix setenv and unsetenv corner cases.
* environ.cc (setenv): Detect invalid argument. (unsetenv): Distinguish EFAULT from EINVAL.
This commit is contained in:
parent
5074489a49
commit
d01a44977f
@ -1,3 +1,8 @@
|
|||||||
|
2009-11-16 Eric Blake <ebb9@byu.net>
|
||||||
|
|
||||||
|
* environ.cc (setenv): Detect invalid argument.
|
||||||
|
(unsetenv): Distinguish EFAULT from EINVAL.
|
||||||
|
|
||||||
2009-11-13 Corinna Vinschen <corinna@vinschen.de>
|
2009-11-13 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* net.cc (fdsock): Fill _rmem and _wmem with valid values returned
|
* net.cc (fdsock): Fill _rmem and _wmem with valid values returned
|
||||||
|
@ -413,10 +413,11 @@ setenv (const char *name, const char *value, int overwrite)
|
|||||||
myfault efault;
|
myfault efault;
|
||||||
if (efault.faulted (EFAULT))
|
if (efault.faulted (EFAULT))
|
||||||
return -1;
|
return -1;
|
||||||
if (!*name)
|
if (!name || !*name || strchr (name, '='))
|
||||||
return 0;
|
{
|
||||||
if (*value == '=')
|
set_errno (EINVAL);
|
||||||
value++;
|
return -1;
|
||||||
|
}
|
||||||
return _addenv (name, value, !!overwrite);
|
return _addenv (name, value, !!overwrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +428,9 @@ unsetenv (const char *name)
|
|||||||
register char **e;
|
register char **e;
|
||||||
int offset;
|
int offset;
|
||||||
myfault efault;
|
myfault efault;
|
||||||
if (efault.faulted () || *name == '\0' || strchr (name, '='))
|
if (efault.faulted (EFAULT))
|
||||||
|
return -1;
|
||||||
|
if (!name || *name == '\0' || strchr (name, '='))
|
||||||
{
|
{
|
||||||
set_errno (EINVAL);
|
set_errno (EINVAL);
|
||||||
return -1;
|
return -1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user