Changeset View
Changeset View
Standalone View
Standalone View
contrib/openpam/lib/libpam/pam_getenv.c
/*- | /*- | ||||
* Copyright (c) 2002-2003 Networks Associates Technology, Inc. | * Copyright (c) 2002-2003 Networks Associates Technology, Inc. | ||||
* Copyright (c) 2004-2017 Dag-Erling Smørgrav | * Copyright (c) 2004-2019 Dag-Erling Smørgrav | ||||
* All rights reserved. | * All rights reserved. | ||||
* | * | ||||
* This software was developed for the FreeBSD Project by ThinkSec AS and | * This software was developed for the FreeBSD Project by ThinkSec AS and | ||||
* Network Associates Laboratories, the Security Research Division of | * Network Associates Laboratories, the Security Research Division of | ||||
* Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 | * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 | ||||
* ("CBOSS"), as part of the DARPA CHATS research program. | * ("CBOSS"), as part of the DARPA CHATS research program. | ||||
* | * | ||||
* Redistribution and use in source and binary forms, with or without | * Redistribution and use in source and binary forms, with or without | ||||
Show All 15 Lines | |||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS | ||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) | ||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||||
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||||
* 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. | ||||
* | * | ||||
* $OpenPAM: pam_getenv.c 938 2017-04-30 21:34:42Z des $ | * $OpenPAM: pam_getenv.c 944 2019-02-22 09:49:12Z des $ | ||||
*/ | */ | ||||
#ifdef HAVE_CONFIG_H | #ifdef HAVE_CONFIG_H | ||||
# include "config.h" | # include "config.h" | ||||
#endif | #endif | ||||
#include <errno.h> | #include <errno.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
Show All 9 Lines | |||||
* | * | ||||
* Retrieve the value of a PAM environment variable | * Retrieve the value of a PAM environment variable | ||||
*/ | */ | ||||
const char * | const char * | ||||
pam_getenv(pam_handle_t *pamh, | pam_getenv(pam_handle_t *pamh, | ||||
const char *name) | const char *name) | ||||
{ | { | ||||
char *str; | size_t len; | ||||
int i; | int i; | ||||
ENTERS(name); | ENTERS(name); | ||||
if (strchr(name, '=') != NULL) { | for (len = 0; name[len] != '\0'; ++len) { | ||||
if (name[len] == '=') { | |||||
errno = EINVAL; | errno = EINVAL; | ||||
RETURNS(NULL); | RETURNS(NULL); | ||||
} | } | ||||
if ((i = openpam_findenv(pamh, name, strlen(name))) < 0) | } | ||||
if ((i = openpam_findenv(pamh, name, len)) < 0) | |||||
RETURNS(NULL); | RETURNS(NULL); | ||||
if ((str = strchr(pamh->env[i], '=')) == NULL) | /* assert(pamh->env[i][len] == '='); */ | ||||
RETURNS(""); | RETURNS(pamh->env[i] + len + 1); | ||||
RETURNS(str); | |||||
} | } | ||||
/** | /** | ||||
* The =pam_getenv function returns the value of an environment variable. | * The =pam_getenv function returns the value of an environment variable. | ||||
* Its semantics are similar to those of =getenv, but it accesses the PAM | * Its semantics are similar to those of =getenv, but it accesses the PAM | ||||
* context's environment list instead of the application's. | * context's environment list instead of the application's. | ||||
* | * | ||||
* >pam_getenvlist | * >pam_getenvlist | ||||
* >pam_putenv | * >pam_putenv | ||||
* >pam_setenv | * >pam_setenv | ||||
*/ | */ |