aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2009-04-07 17:59:45 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2009-04-07 17:59:45 +0000
commitafa326ab45005de9034136f8919c1e595ef3d6b2 (patch)
tree145915f7ff3642176dfce65984512c743d788ba9
parent53cd478f5cb1b8d3118a7c01d9e65be15d14053e (diff)
downloadpam-modules-afa326ab45005de9034136f8919c1e595ef3d6b2.tar.gz
pam-modules-afa326ab45005de9034136f8919c1e595ef3d6b2.tar.bz2
Minor changes
* pamck/conv.c (pamck_conv): Fix handling of PAM_PROMPT_ECHO_ON. * pamck/pamck.c: Minor changes. * pam_sql/pam_sql.c (_pam_get_password): Fix condition. git-svn-id: file:///svnroot/pam-modules/trunk@108 56984be4-0537-0410-a56c-fcb268c96130
-rw-r--r--pam_sql/pam_sql.c2
-rw-r--r--pamck/conv.c16
-rw-r--r--pamck/pamck.c11
3 files changed, 18 insertions, 11 deletions
diff --git a/pam_sql/pam_sql.c b/pam_sql/pam_sql.c
index 7c98c9d..a8cac2a 100644
--- a/pam_sql/pam_sql.c
+++ b/pam_sql/pam_sql.c
@@ -96,7 +96,7 @@ _pam_get_password(pam_handle_t *pamh, char **password, const char *prompt)
token = NULL;
retval = gray_converse(pamh, i, pmsg, &resp);
- if (resp != NULL) {
+ if (resp != NULL && resp[i - replies].resp) {
if (retval == PAM_SUCCESS) { /* a good conversation */
token = XSTRDUP(resp[i - replies].resp);
DEBUG(100,("app returned [%s]", token));
diff --git a/pamck/conv.c b/pamck/conv.c
index 5ea3913..e5cef46 100644
--- a/pamck/conv.c
+++ b/pamck/conv.c
@@ -92,7 +92,8 @@ read_string(const char *prompt, int echo)
fputs(prompt, out);
fflush(out);
str = readline(in);
- fputc('\n', out);
+ if (!echo)
+ fputc('\n', out);
fseek(out, 0, SEEK_CUR);
@@ -123,14 +124,17 @@ pamck_conv(int num_msg, const struct pam_message **msg,
switch (msg[i]->msg_style) {
case PAM_PROMPT_ECHO_OFF:
- str = read_string(msg[i]->msg, 0);
- break;
-
- case PAM_PROMPT_ECHO_ON:
if (pass)
str = strdup(pass);
else
- str = pass = read_string(msg[i]->msg, 1);
+ str = read_string(msg[i]->msg, 0);
+ break;
+
+ case PAM_PROMPT_ECHO_ON:
+ if (user)
+ str = strdup(user);
+ else
+ str = read_string(msg[i]->msg, 1);
break;
case PAM_ERROR_MSG:
diff --git a/pamck/pamck.c b/pamck/pamck.c
index ff6be5a..1c90c04 100644
--- a/pamck/pamck.c
+++ b/pamck/pamck.c
@@ -185,14 +185,17 @@ main (int argc, char **argv)
argc -= optind;
argv += optind;
- if (!argc || argc > 3) {
+ switch (argc) {
+ case 2:
+ pass = argv[1];
+ case 1:
+ user = argv[0];
+ break;
+ default:
usage();
exit(1);
}
- user = argv[0];
- pass = argv[1];
-
rc = pam_start(service, user, &conv, &pamh);
if (rc)
error(2, "pam_start failed");

Return to:

Send suggestions and report system problems to the System administrator.