summaryrefslogtreecommitdiff
path: root/libpam/pam_strerror.c
diff options
context:
space:
mode:
authorAndrew G. Morgan <morgan@kernel.org>2000-06-20 22:10:38 +0000
committerAndrew G. Morgan <morgan@kernel.org>2000-06-20 22:10:38 +0000
commitea488580c42e8918445a945484de3c8a5addc761 (patch)
treec992f3ba699caafedfadc16af38e6359c3c24698 /libpam/pam_strerror.c
Initial revision
Diffstat (limited to 'libpam/pam_strerror.c')
-rw-r--r--libpam/pam_strerror.c112
1 files changed, 112 insertions, 0 deletions
diff --git a/libpam/pam_strerror.c b/libpam/pam_strerror.c
new file mode 100644
index 00000000..ecf8c0bb
--- /dev/null
+++ b/libpam/pam_strerror.c
@@ -0,0 +1,112 @@
+/* pam_strerror.c */
+
+/* $Id$
+ *
+ * $Log$
+ * Revision 1.1 2000/06/20 22:11:21 agmorgan
+ * Initial revision
+ *
+ * Revision 1.1.1.1 1998/07/12 05:17:15 morgan
+ * Linux PAM sources pre-0.66
+ *
+ * Revision 1.6 1997/01/04 20:12:02 morgan
+ * replaced conditional FAIL_NOW with ABORT
+ *
+ * Revision 1.5 1996/07/07 23:58:56 morgan
+ * corrected "... " to "..."
+ *
+ * Revision 1.4 1996/06/02 08:03:29 morgan
+ * spelling correction
+ *
+ * Revision 1.3 1996/03/16 23:08:54 morgan
+ * PAM --> Linux-PAM ;)
+ *
+ */
+
+#include "pam_private.h"
+
+const char *pam_strerror(pam_handle_t *pamh, int errnum)
+{
+#ifdef UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT /* will be removed from v 1.0 */
+
+ int possible_error;
+
+ possible_error = (int) pamh;
+ if (!(possible_error >= 0 && possible_error <= PAM_BAD_ITEM)) {
+ possible_error = errnum;
+ }
+
+/* mask standard behavior to use possible_error variable. */
+#define errnum possible_error
+
+#endif /* UGLY_HACK_FOR_PRIOR_BEHAVIOR_SUPPORT */
+
+ switch (errnum) {
+ case PAM_SUCCESS:
+ return "Success";
+ case PAM_ABORT:
+ return "Critical error - immediate abort";
+ case PAM_OPEN_ERR:
+ return "dlopen() failure";
+ case PAM_SYMBOL_ERR:
+ return "Symbol not found";
+ case PAM_SERVICE_ERR:
+ return "Error in service module";
+ case PAM_SYSTEM_ERR:
+ return "System error";
+ case PAM_BUF_ERR:
+ return "Memory buffer error";
+ case PAM_PERM_DENIED:
+ return "Permission denied";
+ case PAM_AUTH_ERR:
+ return "Authentication failure";
+ case PAM_CRED_INSUFFICIENT:
+ return "Insufficient credentials to access authentication data";
+ case PAM_AUTHINFO_UNAVAIL:
+ return "Authentication service cannot retrieve authentication info.";
+ case PAM_USER_UNKNOWN:
+ return "User not known to the underlying authentication module";
+ case PAM_MAXTRIES:
+ return "Have exhasted maximum number of retries for service.";
+ case PAM_NEW_AUTHTOK_REQD:
+ return "Authentication token is no longer valid; new one required.";
+ case PAM_ACCT_EXPIRED:
+ return "User account has expired";
+ case PAM_SESSION_ERR:
+ return "Cannot make/remove an entry for the specified session";
+ case PAM_CRED_UNAVAIL:
+ return "Authentication service cannot retrieve user credentials";
+ case PAM_CRED_EXPIRED:
+ return "User credentials expired";
+ case PAM_CRED_ERR:
+ return "Failure setting user credentials";
+ case PAM_NO_MODULE_DATA:
+ return "No module specific data is present";
+ case PAM_BAD_ITEM:
+ return "Bad item passed to pam_*_item()";
+ case PAM_CONV_ERR:
+ return "Conversation error";
+ case PAM_AUTHTOK_ERR:
+ return "Authentication token manipulation error";
+ case PAM_AUTHTOK_RECOVER_ERR:
+ return "Authentication information cannot be recovered";
+ case PAM_AUTHTOK_LOCK_BUSY:
+ return "Authentication token lock busy";
+ case PAM_AUTHTOK_DISABLE_AGING:
+ return "Authentication token aging disabled";
+ case PAM_TRY_AGAIN:
+ return "Failed preliminary check by password service";
+ case PAM_IGNORE:
+ return "Please ignore underlying account module";
+ case PAM_MODULE_UNKNOWN:
+ return "Module is unknown";
+ case PAM_AUTHTOK_EXPIRED:
+ return "Authentication token expired";
+ case PAM_CONV_AGAIN:
+ return "Conversation is waiting for event";
+ case PAM_INCOMPLETE:
+ return "Application needs to call libpam again";
+ }
+
+ return "Unknown Linux-PAM error (need to upgrde libpam?)";
+}