pam_strerror.c revision 99158
191094Sdes/*- 292289Sdes * Copyright (c) 2002 Networks Associates Technology, Inc. 391094Sdes * All rights reserved. 491094Sdes * 591094Sdes * This software was developed for the FreeBSD Project by ThinkSec AS and 699158Sdes * Network Associates Laboratories, the Security Research Division of 799158Sdes * Network Associates, Inc. under DARPA/SPAWAR contract N66001-01-C-8035 899158Sdes * ("CBOSS"), as part of the DARPA CHATS research program. 991094Sdes * 1091094Sdes * Redistribution and use in source and binary forms, with or without 1191094Sdes * modification, are permitted provided that the following conditions 1291094Sdes * are met: 1391094Sdes * 1. Redistributions of source code must retain the above copyright 1491094Sdes * notice, this list of conditions and the following disclaimer. 1591094Sdes * 2. Redistributions in binary form must reproduce the above copyright 1691094Sdes * notice, this list of conditions and the following disclaimer in the 1791094Sdes * documentation and/or other materials provided with the distribution. 1891094Sdes * 3. The name of the author may not be used to endorse or promote 1991094Sdes * products derived from this software without specific prior written 2091094Sdes * permission. 2191094Sdes * 2291094Sdes * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 2391094Sdes * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 2491094Sdes * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 2591094Sdes * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 2691094Sdes * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2791094Sdes * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2891094Sdes * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2991094Sdes * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 3091094Sdes * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 3191094Sdes * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 3291094Sdes * SUCH DAMAGE. 3391094Sdes * 3499158Sdes * $P4: //depot/projects/openpam/lib/pam_strerror.c#10 $ 3591094Sdes */ 3691094Sdes 3791094Sdes#include <stdio.h> 3891094Sdes 3991094Sdes#include <security/pam_appl.h> 4091094Sdes 4191094Sdes#include "openpam_impl.h" 4291094Sdes 4391094Sdes/* 4491094Sdes * XSSO 4.2.1 4591094Sdes * XSSO 6 page 92 4691094Sdes * 4791094Sdes * Get PAM standard error message string 4891094Sdes */ 4991094Sdes 5091094Sdesconst char * 5191094Sdespam_strerror(pam_handle_t *pamh, 5291094Sdes int error_number) 5391094Sdes{ 5491094Sdes static char unknown[16]; 5591094Sdes 5691094Sdes pamh = pamh; 5791094Sdes 5891094Sdes switch (error_number) { 5991094Sdes case PAM_SUCCESS: 6091094Sdes return ("success"); 6191094Sdes case PAM_OPEN_ERR: 6291094Sdes return ("failed to load module"); 6391094Sdes case PAM_SYMBOL_ERR: 6491100Sdes return ("invalid symbol"); 6591094Sdes case PAM_SERVICE_ERR: 6691094Sdes return ("error in service module"); 6791094Sdes case PAM_SYSTEM_ERR: 6891094Sdes return ("system error"); 6991094Sdes case PAM_BUF_ERR: 7091094Sdes return ("memory buffer error"); 7191094Sdes case PAM_CONV_ERR: 7291094Sdes return ("conversation failure"); 7391094Sdes case PAM_PERM_DENIED: 7491094Sdes return ("permission denied"); 7591094Sdes case PAM_MAXTRIES: 7691094Sdes return ("maximum number of tries exceeded"); 7791094Sdes case PAM_AUTH_ERR: 7891094Sdes return ("authentication error"); 7991094Sdes case PAM_NEW_AUTHTOK_REQD: 8091094Sdes return ("new authentication token required"); 8191094Sdes case PAM_CRED_INSUFFICIENT: 8291094Sdes return ("insufficient credentials"); 8391094Sdes case PAM_AUTHINFO_UNAVAIL: 8491094Sdes return ("authentication information is unavailable"); 8591094Sdes case PAM_USER_UNKNOWN: 8691094Sdes return ("unknown user"); 8791094Sdes case PAM_CRED_UNAVAIL: 8891094Sdes return ("failed to retrieve user credentials"); 8991094Sdes case PAM_CRED_EXPIRED: 9091094Sdes return ("user credentials have expired"); 9191094Sdes case PAM_CRED_ERR: 9291094Sdes return ("failed to set user credentials"); 9391094Sdes case PAM_ACCT_EXPIRED: 9491094Sdes return ("user accound has expired"); 9591094Sdes case PAM_AUTHTOK_EXPIRED: 9691094Sdes return ("password has expired"); 9791094Sdes case PAM_SESSION_ERR: 9891094Sdes return ("session failure"); 9991094Sdes case PAM_AUTHTOK_ERR: 10091094Sdes return ("authentication token failure"); 10191094Sdes case PAM_AUTHTOK_RECOVERY_ERR: 10291094Sdes return ("failed to recover old authentication token"); 10391094Sdes case PAM_AUTHTOK_LOCK_BUSY: 10491094Sdes return ("authentication token lock busy"); 10591094Sdes case PAM_AUTHTOK_DISABLE_AGING: 10691100Sdes return ("authentication token aging disabled"); 10791094Sdes case PAM_NO_MODULE_DATA: 10891094Sdes return ("module data not found"); 10991094Sdes case PAM_IGNORE: 11091094Sdes return ("ignore this module"); 11191094Sdes case PAM_ABORT: 11291094Sdes return ("general failure"); 11391094Sdes case PAM_TRY_AGAIN: 11491094Sdes return ("try again"); 11591094Sdes case PAM_MODULE_UNKNOWN: 11691094Sdes return ("unknown module type"); 11791094Sdes case PAM_DOMAIN_UNKNOWN: 11891094Sdes return ("unknown authentication domain"); 11991094Sdes default: 12091094Sdes snprintf(unknown, sizeof unknown, "#%d", error_number); 12191094Sdes return (unknown); 12291094Sdes } 12391094Sdes} 12491100Sdes 12591100Sdes/** 12691100Sdes * The =pam_strerror function returns a pointer to a string containing a 12791100Sdes * textual description of the error indicated by the =error_number 12891100Sdes * argument, in the context of the PAM transaction described by the =pamh 12991100Sdes * argument. 13091100Sdes */ 131