2 * Copyright 2000, International Business Machines Corporation and others.
5 * This software has been released under the terms of the IBM Public
6 * License. For details, see the LICENSE file in the top-level source
7 * directory or online at http://www.openafs.org/dl/license10.html
10 #include <afsconfig.h>
11 #include <afs/param.h>
16 #include <security/pam_appl.h>
17 #include "afs_pam_msg.h"
18 #include "afs_message.h"
22 int pam_afs_printf(struct pam_conv *pam_convp, int error, int fmt_msgid, ...)
25 char buf[PAM_MAX_MSG_SIZE];
28 struct pam_message mesg;
29 struct pam_message *mesgp = &mesg;
30 struct pam_response *resp = NULL;
33 if (pam_convp == NULL || pam_convp->conv == NULL)
36 fmt_msg = pam_afs_message(fmt_msgid, &freeit);
37 va_start(args, fmt_msgid);
38 vsprintf(buf, fmt_msg, args);
40 if (freeit) free(fmt_msg);
42 mesg.msg_style = error ? PAM_ERROR_MSG : PAM_TEXT_INFO;
44 errcode = (*(pam_convp->conv))(1, &mesgp, &resp, pam_convp->appdata_ptr);
46 if (resp->resp) free(resp->resp);
53 int pam_afs_prompt(struct pam_conv *pam_convp, char **response,
54 int echo, int fmt_msgid, ...)
57 char buf[PAM_MAX_MSG_SIZE];
60 struct pam_message mesg;
61 struct pam_message *mesgp = &mesg;
62 struct pam_response *resp = NULL;
65 if (pam_convp == NULL || pam_convp->conv == NULL || response == NULL)
70 fmt_msg = pam_afs_message(fmt_msgid, &freeit);
71 va_start(args, fmt_msgid);
72 vsprintf(buf, fmt_msg, args);
74 if (freeit) free(fmt_msg);
76 mesg.msg_style = echo ? PAM_PROMPT_ECHO_ON : PAM_PROMPT_ECHO_OFF;
79 errcode = (*(pam_convp->conv))(1, &mesgp, &resp, pam_convp->appdata_ptr);
81 *response = resp->resp;
83 free(resp); /* but not resp->resp */