diff options
author | Tomas Mraz <tm@t8m.info> | 2005-11-09 10:17:00 +0000 |
---|---|---|
committer | Tomas Mraz <tm@t8m.info> | 2005-11-09 10:17:00 +0000 |
commit | 2d243af6b8ebe579f19ad27d3ab3907ebfe6a77e (patch) | |
tree | e991eb0aabc5987b410af4bf85aa31a0a40c448f /modules/pam_time | |
parent | 6c22ab1b705ee1e990ef3436ffbbbf18dc4c52d6 (diff) | |
download | pam-2d243af6b8ebe579f19ad27d3ab3907ebfe6a77e.tar.gz pam-2d243af6b8ebe579f19ad27d3ab3907ebfe6a77e.tar.bz2 pam-2d243af6b8ebe579f19ad27d3ab3907ebfe6a77e.zip |
Relevant BUGIDs: 562730, 435990
Purpose of commit: bugfix
Commit summary:
---------------
* modules/pam_access/pam_access.c (pam_sm_acct_mgmt): Parse correctly
full path tty name.
* modules/pam_time/pam_time.c (pam_sm_acct_mgmt): Parse correctly
full path tty name. Allow unset tty.
(logic_member): Allow matching ':' in tty name.
* modules/pam_group/pam_group.c (pam_sm_acct_mgmt): Parse correctly
full path tty name. Allow unset tty.
(logic_member): Allow matching ':' in tty name.
* libpam_misc/misc_conv.c (read_string): Read only up to EOL if stdin
is not terminal.
Diffstat (limited to 'modules/pam_time')
-rw-r--r-- | modules/pam_time/pam_time.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/modules/pam_time/pam_time.c b/modules/pam_time/pam_time.c index ccbd88bf..d4aee8a4 100644 --- a/modules/pam_time/pam_time.c +++ b/modules/pam_time/pam_time.c @@ -247,7 +247,7 @@ logic_member(const char *string, int *at) default: if (isalpha(c) || c == '*' || isdigit(c) || c == '_' - || c == '-' || c == '.' || c == '/') { + || c == '-' || c == '.' || c == '/' || c == ':') { token = 1; } else if (token) { --to; @@ -591,8 +591,7 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, D(("PAM_TTY not set, probing stdin")); tty = ttyname(STDIN_FILENO); if (tty == NULL) { - pam_syslog(pamh, LOG_ERR, "couldn't get the tty name"); - return PAM_ABORT; + tty = ""; } if (pam_set_item(pamh, PAM_TTY, tty) != PAM_SUCCESS) { pam_syslog(pamh, LOG_ERR, "couldn't set tty name"); @@ -602,8 +601,12 @@ pam_sm_acct_mgmt(pam_handle_t *pamh, int flags UNUSED, else tty = void_tty; - if (strncmp("/dev/",tty,5) == 0) { /* strip leading /dev/ */ - tty += 5; + if (tty[0] == '/') { /* full path */ + const char *t; + tty++; + if ((t = strchr(tty, '/')) != NULL) { + tty = t + 1; + } } /* good, now we have the service name, the user and the terminal name */ |