Replace pstat variable in check_idle

This commit is contained in:
Petar Kapris 2020-12-19 09:58:27 +01:00
parent e680e16ff8
commit 8077ae6004

View file

@ -832,12 +832,11 @@ void check_idle()
{ /* Check for exceeded time limits & logoff exceeders */ { /* Check for exceeded time limits & logoff exceeders */
char user[sizeof(utmpp->ut_user) + 1]; char user[sizeof(utmpp->ut_user) + 1];
char host[sizeof(utmpp->ut_host) + 1]; char host[sizeof(utmpp->ut_host) + 1];
struct stat status, *pstat; struct stat status;
time_t idle, sesstime; time_t idle, sesstime;
pstat = &status; /* point to status structure */
sprintf(path, "/proc/%d", utmpp->ut_pid); sprintf(path, "/proc/%d", utmpp->ut_pid);
if (utmpp->ut_type != USER_PROCESS || stat(path, pstat)) /* if not user process, or if proc doesn't exist */ if (utmpp->ut_type != USER_PROCESS || stat(path, &status)) /* if not user process, or if proc doesn't exist */
return; /* skip the utmp entry */ return; /* skip the utmp entry */
strncpy(user, utmpp->ut_user, sizeof(user) - 1); /* get user name */ strncpy(user, utmpp->ut_user, sizeof(user) - 1); /* get user name */
user[sizeof(user) - 1] = '\0'; /* null terminate user name string */ user[sizeof(user) - 1] = '\0'; /* null terminate user name string */
@ -847,7 +846,7 @@ void check_idle()
strncpy(dev, utmpp->ut_line, sizeof(dev) - 1); /* get device name */ strncpy(dev, utmpp->ut_line, sizeof(dev) - 1); /* get device name */
dev[sizeof(dev) - 1] = '\0'; dev[sizeof(dev) - 1] = '\0';
sprintf(path, "/dev/%s", dev); sprintf(path, "/dev/%s", dev);
if (stat(path, pstat) && chk_xsession(dev, host) != TIMEOUTD_XSESSION_LOCAL) { /* if can't get status for if (stat(path, &status) && chk_xsession(dev, host) != TIMEOUTD_XSESSION_LOCAL) { /* if can't get status for
port && if it's not a local Xsession */ port && if it's not a local Xsession */
syslog(LOG_ERR, "Can't get status of user %s's terminal (%s)\n", user, dev); syslog(LOG_ERR, "Can't get status of user %s's terminal (%s)\n", user, dev);
return; return;
@ -865,7 +864,7 @@ void check_idle()
(int) idle, user); (int) idle, user);
} else } else
#endif #endif
idle = (time_now - max(pstat->st_atime, pstat->st_mtime)) / 60; idle = (time_now - max(status.st_atime, status.st_mtime)) / 60;
sesstime = (time_now - utmpp->ut_time) / 60; sesstime = (time_now - utmpp->ut_time) / 60;
switch (chk_timeout(user, dev, host, idle, sesstime)) { switch (chk_timeout(user, dev, host, idle, sesstime)) {