diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2008-09-25 07:00:04 +0400 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2008-09-25 07:00:04 +0400 |
commit | 57d7cfcdb7b9cc94fa2de90a9b87eeff40f39bca (patch) | |
tree | 26872af54de1d171fd1fc33396becc71bd67d637 /newlib/libc/stdlib | |
parent | 37f996a2b22baba8cc6ee7df87f72df25de36737 (diff) |
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.
Diffstat (limited to 'newlib/libc/stdlib')
-rw-r--r-- | newlib/libc/stdlib/setenv_r.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/newlib/libc/stdlib/setenv_r.c b/newlib/libc/stdlib/setenv_r.c index e9ae76ef5..d73ba3949 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; } |