pam_getenv.c revision 110558
11573Srgrimes/*- 21573Srgrimes * Copyright (c) 2002 Networks Associates Technology, Inc. 31573Srgrimes * All rights reserved. 41573Srgrimes * 51573Srgrimes * This software was developed for the FreeBSD Project by ThinkSec AS and 61573Srgrimes * Network Associates Laboratories, the Security Research Division of 71573Srgrimes * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 81573Srgrimes * ("CBOSS"), as part of the DARPA CHATS research program. 91573Srgrimes * 101573Srgrimes * Redistribution and use in source and binary forms, with or without 111573Srgrimes * modification, are permitted provided that the following conditions 121573Srgrimes * are met: 131573Srgrimes * 1. Redistributions of source code must retain the above copyright 141573Srgrimes * notice, this list of conditions and the following disclaimer. 151573Srgrimes * 2. Redistributions in binary form must reproduce the above copyright 161573Srgrimes * notice, this list of conditions and the following disclaimer in the 171573Srgrimes * documentation and/or other materials provided with the distribution. 181573Srgrimes * 3. The name of the author may not be used to endorse or promote 191573Srgrimes * products derived from this software without specific prior written 201573Srgrimes * permission. 211573Srgrimes * 221573Srgrimes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 231573Srgrimes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 241573Srgrimes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 251573Srgrimes * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 261573Srgrimes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 271573Srgrimes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 281573Srgrimes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 291573Srgrimes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 301573Srgrimes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 311573Srgrimes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 321573Srgrimes * SUCH DAMAGE. 3392986Sobrien * 3492986Sobrien * $P4: //depot/projects/openpam/lib/pam_getenv.c#12 $ 351573Srgrimes */ 361573Srgrimes 371573Srgrimes#include <stdlib.h> 3824927Sbde#include <string.h> 39171219Speter 4024927Sbde#include <security/pam_appl.h> 411573Srgrimes 421573Srgrimes#include "openpam_impl.h" 431573Srgrimes 441573Srgrimes/* 451573Srgrimes * XSSO 4.2.1 461573Srgrimes * XSSO 6 page 44 4724927Sbde * 481573Srgrimes * Retrieve the value of a PAM environment variable 491573Srgrimes */ 501573Srgrimes 51171219Speterchar * 52171219Speterpam_getenv(pam_handle_t *pamh, 53171219Speter const char *name) 54171219Speter{ 551573Srgrimes char *str; 56 int i; 57 58 ENTERS(name); 59 if (pamh == NULL) 60 RETURNS(NULL); 61 if (name == NULL || strchr(name, '=') != NULL) 62 RETURNS(NULL); 63 if ((i = openpam_findenv(pamh, name, strlen(name))) == -1) 64 RETURNS(NULL); 65 for (str = pamh->env[i]; *str != '\0'; ++str) { 66 if (*str == '=') { 67 ++str; 68 break; 69 } 70 } 71 RETURNS(str); 72} 73 74/** 75 * The =pam_getenv function returns the value of an environment variable. 76 * Its semantics are similar to those of =getenv, but it accesses the PAM 77 * context's environment list instead of the application's. 78 * 79 * >pam_getenvlist 80 * >pam_putenv 81 * >pam_setenv 82 */ 83