Browse Source

Make setenv(3) consistent with unsetenv(3), giving EINVAL if passed

an empty name, NULL pointer, or a name containing an '=' character.
OK millert@, guenther@
OPENBSD_5_3
jeremy 11 years ago
parent
commit
803376ceaa
2 changed files with 10 additions and 20 deletions
  1. +5
    -17
      src/lib/libc/stdlib/getenv.3
  2. +5
    -3
      src/lib/libc/stdlib/setenv.c

+ 5
- 17
src/lib/libc/stdlib/getenv.3 View File

@ -29,9 +29,9 @@
.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
.\" SUCH DAMAGE. .\" SUCH DAMAGE.
.\" .\"
.\" $OpenBSD: getenv.3,v 1.17 2012/06/02 00:14:16 guenther Exp $
.\" $OpenBSD: getenv.3,v 1.18 2012/09/23 16:08:04 jeremy Exp $
.\" .\"
.Dd $Mdocdate: June 2 2012 $
.Dd $Mdocdate: September 23 2012 $
.Dt GETENV 3 .Dt GETENV 3
.Os .Os
.Sh NAME .Sh NAME
@ -53,14 +53,6 @@
.Sh DESCRIPTION .Sh DESCRIPTION
These functions set, unset, and fetch environment variables from the host These functions set, unset, and fetch environment variables from the host
.Em environment list . .Em environment list .
For compatibility with differing environment conventions, the given argument
.Fa name
may be appended with an equal sign
.Dq Li \&=
followed by zero or more characters,
and
.Fa value
may be prepended with an equal sign.
.Pp .Pp
The The
.Fn getenv .Fn getenv
@ -125,19 +117,15 @@ The
.Fn setenv .Fn setenv
or or
.Fn unsetenv .Fn unsetenv
function was passed a
function was passed an empty
.Ar name
or a NULL pointer, or was passed a
.Ar name .Ar name
containing an containing an
.Sq = .Sq =
character. character.
.Pp .Pp
The The
.Fn unsetenv
function was passed an empty
.Ar name
or a NULL pointer.
.Pp
The
.Fn putenv .Fn putenv
function was passed a function was passed a
.Ar string .Ar string


+ 5
- 3
src/lib/libc/stdlib/setenv.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: setenv.c,v 1.13 2010/08/23 22:31:50 millert Exp $ */
/* $OpenBSD: setenv.c,v 1.14 2012/09/23 16:08:04 jeremy Exp $ */
/* /*
* Copyright (c) 1987 Regents of the University of California. * Copyright (c) 1987 Regents of the University of California.
* All rights reserved. * All rights reserved.
@ -94,14 +94,16 @@ setenv(const char *name, const char *value, int rewrite)
const char *np; const char *np;
int l_value, offset = 0; int l_value, offset = 0;
if (!name || !*name) {
errno = EINVAL;
return (-1);
}
for (np = name; *np && *np != '='; ++np) for (np = name; *np && *np != '='; ++np)
; ;
#ifdef notyet
if (*np) { if (*np) {
errno = EINVAL; errno = EINVAL;
return (-1); /* has `=' in name */ return (-1); /* has `=' in name */
} }
#endif
l_value = strlen(value); l_value = strlen(value);
if ((C = __findenv(name, (int)(np - name), &offset)) != NULL) { if ((C = __findenv(name, (int)(np - name), &offset)) != NULL) {


Loading…
Cancel
Save