diff options
Diffstat (limited to 'newlib')
-rw-r--r-- | newlib/ChangeLog | 5 | ||||
-rw-r--r-- | newlib/libc/stdlib/setenv_r.c | 11 |
2 files changed, 9 insertions, 7 deletions
diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 4d2fa61..0dee816 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2008-09-24 Jeff Johnston <jjohnstn@redhat.com> + + * libc/stdlib/setenv_r.c (_unsetenv_r): Modify to return -1 only if + name is NULL, empty, or contains equal sign. + 2008-09-24 Pawel Veselov <pawel.veselov@gmail.com> Fix setenv/getenv/unsetenv to be OpenGroup compliant: diff --git a/newlib/libc/stdlib/setenv_r.c b/newlib/libc/stdlib/setenv_r.c index e9ae76e..d73ba39 100644 --- a/newlib/libc/stdlib/setenv_r.c +++ b/newlib/libc/stdlib/setenv_r.c @@ -146,9 +146,9 @@ _DEFUN (_unsetenv_r, (reent_ptr, name), { register char **P; int offset; - int rc; - - if (strchr(name, '=')) + + /* Name cannot be NULL, empty, or contain an equal sign. */ + if (name == NULL || name[0] == '\0' || strchr(name, '=')) { errno = EINVAL; return -1; @@ -156,16 +156,13 @@ _DEFUN (_unsetenv_r, (reent_ptr, name), ENV_LOCK; - rc = -1; - while (_findenv_r (reent_ptr, name, &offset)) /* if set multiple times */ { - rc = 0; for (P = &(*p_environ)[offset];; ++P) if (!(*P = *(P + 1))) break; } ENV_UNLOCK; - return (rc); + return 0; } |