pam_get_item.c revision 174832
191094Sdes/*- 2115619Sdes * Copyright (c) 2002-2003 Networks Associates Technology, Inc. 3174832Sdes * Copyright (c) 2004-2007 Dag-Erling Sm��rgrav 491094Sdes * All rights reserved. 591094Sdes * 691094Sdes * This software was developed for the FreeBSD Project by ThinkSec AS and 799158Sdes * Network Associates Laboratories, the Security Research Division of 899158Sdes * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 999158Sdes * ("CBOSS"), as part of the DARPA CHATS research program. 1091094Sdes * 1191094Sdes * Redistribution and use in source and binary forms, with or without 1291094Sdes * modification, are permitted provided that the following conditions 1391094Sdes * are met: 1491094Sdes * 1. Redistributions of source code must retain the above copyright 1591094Sdes * notice, this list of conditions and the following disclaimer. 1691094Sdes * 2. Redistributions in binary form must reproduce the above copyright 1791094Sdes * notice, this list of conditions and the following disclaimer in the 1891094Sdes * documentation and/or other materials provided with the distribution. 1991094Sdes * 3. The name of the author may not be used to endorse or promote 2091094Sdes * products derived from this software without specific prior written 2191094Sdes * permission. 2291094Sdes * 2391094Sdes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2491094Sdes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2591094Sdes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2691094Sdes * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2791094Sdes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2891094Sdes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2991094Sdes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 3091094Sdes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3191094Sdes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3291094Sdes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3391094Sdes * SUCH DAMAGE. 3491094Sdes * 35174832Sdes * $Id: pam_get_item.c 408 2007-12-21 11:36:24Z des $ 3691094Sdes */ 3791094Sdes 3891094Sdes#include <sys/param.h> 3991094Sdes 4091094Sdes#include <security/pam_appl.h> 4191094Sdes 4291094Sdes#include "openpam_impl.h" 4391094Sdes 44110503Sdesconst char *_pam_item_name[PAM_NUM_ITEMS] = { 45110503Sdes "(NO ITEM)", 46110503Sdes "PAM_SERVICE", 47110503Sdes "PAM_USER", 48110503Sdes "PAM_TTY", 49110503Sdes "PAM_RHOST", 50110503Sdes "PAM_CONV", 51110503Sdes "PAM_AUTHTOK", 52110503Sdes "PAM_OLDAUTHTOK", 53110503Sdes "PAM_RUSER", 54110503Sdes "PAM_USER_PROMPT", 55110503Sdes "PAM_REPOSITORY", 56110503Sdes "PAM_AUTHTOK_PROMPT", 57110503Sdes "PAM_OLDAUTHTOK_PROMPT" 58110503Sdes}; 59110503Sdes 6091094Sdes/* 6191094Sdes * XSSO 4.2.1 6291094Sdes * XSSO 6 page 46 6391094Sdes * 6491094Sdes * Get PAM information 6591094Sdes */ 6691094Sdes 6791094Sdesint 68174832Sdespam_get_item(const pam_handle_t *pamh, 6991094Sdes int item_type, 7091094Sdes const void **item) 7191094Sdes{ 72107937Sdes 73110503Sdes ENTERI(item_type); 7491094Sdes if (pamh == NULL) 75107937Sdes RETURNC(PAM_SYSTEM_ERR); 7691094Sdes switch (item_type) { 7791094Sdes case PAM_SERVICE: 7891094Sdes case PAM_USER: 7991094Sdes case PAM_AUTHTOK: 8091094Sdes case PAM_OLDAUTHTOK: 8191094Sdes case PAM_TTY: 8291094Sdes case PAM_RHOST: 8391094Sdes case PAM_RUSER: 8491094Sdes case PAM_CONV: 8591094Sdes case PAM_USER_PROMPT: 8691094Sdes case PAM_AUTHTOK_PROMPT: 8793982Sdes case PAM_OLDAUTHTOK_PROMPT: 8899158Sdes case PAM_REPOSITORY: 8991094Sdes *item = pamh->item[item_type]; 90107937Sdes RETURNC(PAM_SUCCESS); 9191094Sdes default: 92107937Sdes RETURNC(PAM_SYMBOL_ERR); 9391094Sdes } 9491094Sdes} 9591100Sdes 9691100Sdes/* 9791100Sdes * Error codes: 9891100Sdes * 9991100Sdes * PAM_SYMBOL_ERR 10091100Sdes * PAM_SYSTEM_ERR 10191100Sdes */ 10291100Sdes 10391100Sdes/** 10491100Sdes * The =pam_get_item function stores a pointer to the item specified by 10591100Sdes * the =item_type argument in the location specified by the =item 10691100Sdes * argument. 10791100Sdes * The item is retrieved from the PAM context specified by the =pamh 10891100Sdes * argument. 10991100Sdes * The following item types are recognized: 11091100Sdes * 11191100Sdes * =PAM_SERVICE: 11291100Sdes * The name of the requesting service. 11391100Sdes * =PAM_USER: 11491100Sdes * The name of the user the application is trying to 11591100Sdes * authenticate. 11691100Sdes * =PAM_TTY: 11791100Sdes * The name of the current terminal. 11891100Sdes * =PAM_RHOST: 11991100Sdes * The name of the applicant's host. 12091100Sdes * =PAM_CONV: 12191100Sdes * A =struct pam_conv describing the current conversation 12291100Sdes * function. 12391100Sdes * =PAM_AUTHTOK: 12491100Sdes * The current authentication token. 12591100Sdes * =PAM_OLDAUTHTOK: 12691100Sdes * The expired authentication token. 12791100Sdes * =PAM_RUSER: 12891100Sdes * The name of the applicant. 12991100Sdes * =PAM_USER_PROMPT: 13091100Sdes * The prompt to use when asking the applicant for a user 13191100Sdes * name to authenticate as. 13291100Sdes * =PAM_AUTHTOK_PROMPT: 13391100Sdes * The prompt to use when asking the applicant for an 13491100Sdes * authentication token. 13593982Sdes * =PAM_OLDAUTHTOK_PROMPT: 13693982Sdes * The prompt to use when asking the applicant for an 13793982Sdes * expired authentication token prior to changing it. 13891100Sdes * 13991100Sdes * See =pam_start for a description of =struct pam_conv. 14091100Sdes * 14191100Sdes * >pam_set_item 14291100Sdes */ 143