pam/pam-0.99.7.1-console-decrement.patch
Tomáš Mráz a28e30cbc4 - pam_console: always decrement use count (#230823)
- pam_namespace: use raw context for poly dir name (#227345)
- pam_namespace: truncate long poly dir name (append hash) (#230120)
- we don't patch any po files anymore
2007-03-23 11:02:35 +00:00

66 lines
1.8 KiB
Diff

--- Linux-PAM-0.99.7.1/modules/pam_console/pam_console.c.decrement 2006-05-10 11:32:40.000000000 +0200
+++ Linux-PAM-0.99.7.1/modules/pam_console/pam_console.c 2007-03-23 11:14:53.000000000 +0100
@@ -19,7 +19,7 @@
*
* /var/run/console/<username> is used for reference counting
* and to make console authentication easy -- if it exists, then
- * <username> has console access.
+ * <username> is logged on console.
*
* A system startup script should remove /var/run/console/console.lock
* and everything in /var/run/console/
@@ -560,7 +560,7 @@
*/
int fd;
int count = 0;
- int err;
+ int err = PAM_SUCCESS;
int delete_consolelock = 0;
const char *username = NULL, *user_prompt;
char *lockfile = NULL;
@@ -605,7 +605,8 @@
_pam_log(pamh, LOG_ERR, FALSE,
"\"impossible\" fstat error on %s", consolelock);
close(fd);
- err = PAM_SESSION_ERR; goto return_error;
+ err = PAM_SESSION_ERR;
+ goto decrement;
}
consoleuser = _do_malloc(st.st_size+1);
if (st.st_size) {
@@ -614,7 +615,7 @@
"\"impossible\" read error on %s", consolelock);
err = PAM_SESSION_ERR;
close(fd);
- goto return_error;
+ goto decrement;
}
consoleuser[st.st_size] = '\0';
}
@@ -627,23 +628,19 @@
*/
console_run_handlers(pamh, FALSE, username, tty);
}
- } else {
- /* didn't open file */
- err = PAM_SESSION_ERR;
- goto return_error;
}
}
+decrement:
count = use_count(pamh, lockfile, -1, 1);
if (count < 1 && delete_consolelock) {
if (unlink(consolelock)) {
_pam_log(pamh, LOG_ERR, FALSE,
"\"impossible\" unlink error on %s", consolelock);
- err = PAM_SESSION_ERR; goto return_error;
+ err = PAM_SESSION_ERR;
}
}
- err = PAM_SUCCESS;
return_error:
if (lockfile) free(lockfile);
if (consoleuser) free (consoleuser);