Changeset 39 in openpam
- Timestamp:
- Feb 7, 2002, 12:22:08 PM (19 years ago)
- Location:
- trunk
- Files:
-
- 3 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/include/security/openpam.h
r32 r39 37 37 #ifndef _SECURITY_OPENPAM_H_INCLUDED 38 38 #define _SECURITY_OPENPAM_H_INCLUDED 39 40 /* 41 * Annoying but necessary header pollution 42 */ 43 #include <stdarg.h> 44 45 /* 46 * API extensions 47 */ 48 int 49 pam_error(pam_handle_t *_pamh, 50 const char *_fmt, 51 ...); 52 53 int 54 pam_get_authtok(pam_handle_t *_pamh, 55 const char **_authtok, 56 const char *_prompt); 57 58 int 59 pam_info(pam_handle_t *_pamh, 60 const char *_fmt, 61 ...); 62 63 int 64 pam_prompt(pam_handle_t *_pamh, 65 int _style, 66 char **_resp, 67 const char *_fmt, 68 ...); 69 70 int 71 pam_setenv(pam_handle_t *_pamh, 72 const char *_name, 73 const char *_value, 74 int _overwrite); 75 76 int 77 pam_vinfo(pam_handle_t *_pamh, 78 const char *_fmt, 79 va_list _ap); 80 81 int 82 pam_verror(pam_handle_t *_pamh, 83 const char *_fmt, 84 va_list _ap); 85 86 int 87 pam_vprompt(pam_handle_t *_pamh, 88 int _style, 89 char **_resp, 90 const char *_fmt, 91 va_list _ap); 39 92 40 93 /* -
trunk/include/security/pam_appl.h
r38 r39 123 123 124 124 /* 125 * OpenPAM extensions126 */127 int128 pam_error(pam_handle_t *_pamh,129 const char *_fmt,130 ...);131 132 int133 pam_get_authtok(pam_handle_t *_pamh,134 const char **_authtok,135 const char *_prompt);136 137 int138 pam_info(pam_handle_t *_pamh,139 const char *_fmt,140 ...);141 142 int143 pam_prompt(pam_handle_t *pamh,144 char **resp,145 int echo,146 const char *fmt,147 ...);148 149 int150 pam_setenv(pam_handle_t *_pamh,151 const char *_name,152 const char *_value,153 int overwrite);154 155 /*156 125 * Single Sign-On extensions 157 126 */ -
trunk/lib/Makefile
r21 r39 71 71 SRCS += pam_start.c 72 72 SRCS += pam_strerror.c 73 SRCS += pam_verror.c 74 SRCS += pam_vinfo.c 75 SRCS += pam_vprompt.c 73 76 74 77 .if 0 -
trunk/lib/pam_error.c
r16 r39 40 40 41 41 #include <security/pam_appl.h> 42 #include <security/openpam.h> 42 43 43 44 /* … … 52 53 ...) 53 54 { 54 char msgbuf[PAM_MAX_MSG_SIZE];55 struct pam_message msg;56 const struct pam_message *msgp;57 struct pam_response *rsp;58 struct pam_conv conv;59 55 va_list ap; 56 char *rsp; 60 57 int r; 61 58 62 if ((r = pam_get_item(pamh, PAM_CONV, (void *)&conv)) != PAM_SUCCESS)63 return (r);64 59 va_start(ap, fmt); 65 vsnprintf(msgbuf, PAM_MAX_MSG_SIZE, fmt, ap);60 r = pam_vprompt(pamh, PAM_ERROR_MSG, &rsp, fmt, ap); 66 61 va_end(ap); 67 msg.msg_style = PAM_ERROR_MSG;68 msg.msg = msgbuf;69 msgp = &msg;70 r = (conv.conv)(1, &msgp, &rsp, conv.appdata_ptr);71 62 free(rsp); /* ignore response */ 72 63 return (r); -
trunk/lib/pam_get_authtok.c
r38 r39 38 38 39 39 #include <security/pam_appl.h> 40 #include <security/openpam.h> 40 41 41 42 #include "openpam_impl.h" … … 66 67 prompt = "Password:"; 67 68 } 68 r = pam_prompt(pamh, &resp, 0, "%s", prompt ? prompt : p); 69 r = pam_prompt(pamh, PAM_PROMPT_ECHO_OFF, &resp, 70 "%s", prompt ? prompt : p); 69 71 if (r != PAM_SUCCESS) 70 72 return (r); -
trunk/lib/pam_get_user.c
r35 r39 38 38 39 39 #include <security/pam_appl.h> 40 #include <security/openpam.h> 40 41 41 42 #include "openpam_impl.h" … … 67 68 prompt = "Login: "; 68 69 } 69 r = pam_prompt(pamh, &resp, 0, "%s", prompt ? prompt : p); 70 r = pam_prompt(pamh, PAM_PROMPT_ECHO_ON, &resp, 71 "%s", prompt ? prompt : p); 70 72 if (r != PAM_SUCCESS) 71 73 return (r); -
trunk/lib/pam_info.c
r16 r39 40 40 41 41 #include <security/pam_appl.h> 42 #include <security/openpam.h> 42 43 43 44 /* … … 52 53 ...) 53 54 { 54 char msgbuf[PAM_MAX_MSG_SIZE];55 struct pam_message msg;56 const struct pam_message *msgp;57 struct pam_response *rsp;58 struct pam_conv conv;59 55 va_list ap; 56 char *rsp; 60 57 int r; 61 58 62 if ((r = pam_get_item(pamh, PAM_CONV, (void *)&conv)) != PAM_SUCCESS)63 return (r);64 59 va_start(ap, fmt); 65 vsnprintf(msgbuf, PAM_MAX_MSG_SIZE, fmt, ap);60 r = pam_vprompt(pamh, PAM_TEXT_INFO, &rsp, fmt, ap); 66 61 va_end(ap); 67 msg.msg_style = PAM_TEXT_INFO;68 msg.msg = msgbuf;69 msgp = &msg;70 r = (conv.conv)(1, &msgp, &rsp, conv.appdata_ptr);71 62 free(rsp); /* ignore response */ 72 63 return (r); -
trunk/lib/pam_prompt.c
r16 r39 36 36 37 37 #include <stdarg.h> 38 #include <stdio.h>39 #include <stdlib.h>40 38 41 39 #include <security/pam_appl.h> 40 #include <security/openpam.h> 42 41 43 42 /* 44 43 * OpenPAM extension 45 44 * 46 * Prompt the user for information45 * Call the conversation function 47 46 */ 48 47 49 48 int 50 49 pam_prompt(pam_handle_t *pamh, 50 int style, 51 51 char **resp, 52 int echo,53 52 const char *fmt, 54 53 ...) 55 54 { 56 char msgbuf[PAM_MAX_MSG_SIZE];57 struct pam_message msg;58 const struct pam_message *msgp;59 struct pam_response *rsp;60 struct pam_conv conv;61 55 va_list ap; 62 56 int r; 63 57 64 if ((r = pam_get_item(pamh, PAM_CONV, (void *)&conv)) != PAM_SUCCESS)65 return (r);66 58 va_start(ap, fmt); 67 vsnprintf(msgbuf, PAM_MAX_MSG_SIZE, fmt, ap);59 r = pam_vprompt(pamh, style, resp, fmt, ap); 68 60 va_end(ap); 69 msg.msg_style = echo ? PAM_PROMPT_ECHO_ON : PAM_PROMPT_ECHO_OFF;70 msg.msg = msgbuf;71 msgp = &msg;72 r = (conv.conv)(1, &msgp, &rsp, conv.appdata_ptr);73 *resp = rsp == NULL ? NULL : rsp->resp;74 free(rsp);75 61 return (r); 76 62 }
Note: See TracChangeset
for help on using the changeset viewer.