summaryrefslogtreecommitdiff
path: root/support.c
diff options
context:
space:
mode:
authorJeroen <jeroen@nijhofnet.nl>2011-08-20 00:15:08 +0200
committerJeroen <jeroen@nijhofnet.nl>2011-08-20 00:15:08 +0200
commit3cee0494d3bc79adf496251b42dc2b0ff7848380 (patch)
treec942667373f48805172871d25eec61b23fa0e028 /support.c
parent638486dec6577299c7d8282da4b2f02fc9871bbd (diff)
downloadpam_tacplus-3cee0494d3bc79adf496251b42dc2b0ff7848380.tar.gz
pam_tacplus-3cee0494d3bc79adf496251b42dc2b0ff7848380.zip
Added _pam_get_rhost() and _pam_get_user()
Diffstat (limited to 'support.c')
-rw-r--r--support.c43
1 files changed, 33 insertions, 10 deletions
diff --git a/support.c b/support.c
index 864772e..33362d9 100644
--- a/support.c
+++ b/support.c
@@ -59,11 +59,35 @@ void *_xcalloc (size_t size) {
#define _xcalloc xcalloc
#endif
+void _pam_log(int err, const char *format,...) {
+ char msg[256];
+ va_list args;
+
+ va_start(args, format);
+ vsnprintf(msg, sizeof(msg), format, args);
+ openlog("PAM-tacplus", LOG_PID, LOG_AUTH);
+ syslog(err, "%s", msg);
+ va_end(args);
+ closelog();
+}
+
+char *_pam_get_user(pam_handle_t *pamh) {
+ int retval;
+ char *user;
+
+ retval = pam_get_user(pamh, (void *)&user, "Username: ");
+ if (retval != PAM_SUCCESS || user == NULL || *user == '\0') {
+ _pam_log(LOG_ERR, "unable to obtain username");
+ user = NULL;
+ }
+ return user;
+}
+
char *_pam_get_terminal(pam_handle_t *pamh) {
int retval;
char *tty;
- retval = pam_get_item (pamh, PAM_TTY, (void *)&tty);
+ retval = pam_get_item(pamh, PAM_TTY, (void *)&tty);
if (retval != PAM_SUCCESS || tty == NULL || *tty == '\0') {
tty = ttyname(STDIN_FILENO);
if(tty == NULL || *tty == '\0')
@@ -72,16 +96,15 @@ char *_pam_get_terminal(pam_handle_t *pamh) {
return tty;
}
-void _pam_log(int err, const char *format,...) {
- char msg[256];
- va_list args;
+char *_pam_get_rhost(pam_handle_t *pamh) {
+ int retval;
+ char *rhost;
- va_start(args, format);
- vsnprintf(msg, sizeof(msg), format, args);
- openlog("PAM-tacplus", LOG_PID, LOG_AUTH);
- syslog(err, "%s", msg);
- va_end(args);
- closelog();
+ retval = pam_get_item(pamh, PAM_RHOST, (void *)&rhost);
+ if (retval != PAM_SUCCESS || rhost == NULL || *rhost == '\0') {
+ rhost = "unknown";
+ }
+ return rhost;
}
/* stolen from pam_stress */