You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1.5 KiB
42 lines
1.5 KiB
7 years ago
|
diff -up Linux-PAM-1.1.8/modules/pam_limits/pam_limits.c.check-process Linux-PAM-1.1.8/modules/pam_limits/pam_limits.c
|
||
|
--- Linux-PAM-1.1.8/modules/pam_limits/pam_limits.c.check-process 2013-06-18 16:11:21.000000000 +0200
|
||
|
+++ Linux-PAM-1.1.8/modules/pam_limits/pam_limits.c 2014-09-10 16:39:36.263256066 +0200
|
||
|
@@ -27,6 +27,7 @@
|
||
|
#include <errno.h>
|
||
|
#include <syslog.h>
|
||
|
#include <stdarg.h>
|
||
|
+#include <signal.h>
|
||
|
#include <sys/types.h>
|
||
|
#include <sys/stat.h>
|
||
|
#include <sys/resource.h>
|
||
|
@@ -269,16 +270,27 @@ check_logins (pam_handle_t *pamh, const
|
||
|
continue;
|
||
|
}
|
||
|
if (!pl->flag_numsyslogins) {
|
||
|
+ char user[sizeof(ut->UT_USER) + 1];
|
||
|
+ user[0] = '\0';
|
||
|
+ strncat(user, ut->UT_USER, sizeof(ut->UT_USER));
|
||
|
+
|
||
|
if (((pl->login_limit_def == LIMITS_DEF_USER)
|
||
|
|| (pl->login_limit_def == LIMITS_DEF_GROUP)
|
||
|
|| (pl->login_limit_def == LIMITS_DEF_DEFAULT))
|
||
|
- && strncmp(name, ut->UT_USER, sizeof(ut->UT_USER)) != 0) {
|
||
|
+ && strcmp(name, user) != 0) {
|
||
|
continue;
|
||
|
}
|
||
|
if ((pl->login_limit_def == LIMITS_DEF_ALLGROUP)
|
||
|
- && !pam_modutil_user_in_group_nam_nam(pamh, ut->UT_USER, pl->login_group)) {
|
||
|
+ && !pam_modutil_user_in_group_nam_nam(pamh, user, pl->login_group)) {
|
||
|
continue;
|
||
|
}
|
||
|
+ if (kill(ut->ut_pid, 0) == -1 && errno == ESRCH) {
|
||
|
+ /* process does not exist anymore */
|
||
|
+ pam_syslog(pamh, LOG_WARNING,
|
||
|
+ "Stale utmp entry (pid %d) for '%s' ignored",
|
||
|
+ ut->ut_pid, user);
|
||
|
+ continue;
|
||
|
+ }
|
||
|
}
|
||
|
if (++count > limit) {
|
||
|
break;
|