]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
login: add pid to login_context struct
authorKarel Zak <kzak@redhat.com>
Thu, 25 Aug 2011 15:41:00 +0000 (17:41 +0200)
committerKarel Zak <kzak@redhat.com>
Wed, 26 Oct 2011 21:17:16 +0000 (23:17 +0200)
Signed-off-by: Karel Zak <kzak@redhat.com>
login-utils/login.c

index c4ef30a4b543c112d5adfb63d0c26b7f35c7e8b2..9299e5cdd19961b5a9350d4ebd775f331f546365 100644 (file)
@@ -98,6 +98,8 @@ struct login_context {
 
        char            *hostname;
        char            hostaddress[16];
+
+       pid_t           pid;
 };
 
 /*
@@ -110,7 +112,6 @@ struct passwd *pwd;
 
 static struct passwd pwdcopy;
 static char *username;
-static pid_t pid;
 
 static void timedout(int);
 static void sigint(int);
@@ -278,7 +279,7 @@ logbtmp(struct login_context *cxt, const char *username)
 #endif
 
        ut.ut_type = LOGIN_PROCESS;     /* XXX doesn't matter */
-       ut.ut_pid = pid;
+       ut.ut_pid = cxt->pid;
        if (cxt->hostname) {
                xstrncpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host));
                if (cxt->hostaddress && *cxt->hostaddress)
@@ -391,10 +392,10 @@ int main(int argc, char **argv)
        pam_handle_t *pamh = NULL;
        struct pam_conv conv = { misc_conv, NULL };
        struct sigaction sa, oldsa_hup, oldsa_term;
-       struct login_context cxt;
 
-       memset(&cxt, 0, sizeof(cxt));
-       pid = getpid();
+       struct login_context cxt = {
+               .pid = getpid()
+       };
 
        signal(SIGALRM, timedout);
        siginterrupt(SIGALRM, 1);       /* we have to interrupt syscalls like ioclt() */
@@ -737,7 +738,7 @@ int main(int argc, char **argv)
                   Michael Riepe <michael@stud.uni-hannover.de>
                 */
                while ((utp = getutent()))
-                       if (utp->ut_pid == pid
+                       if (utp->ut_pid == cxt.pid
                            && utp->ut_type >= INIT_PROCESS
                            && utp->ut_type <= DEAD_PROCESS)
                                break;
@@ -776,7 +777,7 @@ int main(int argc, char **argv)
                }
 #endif
                ut.ut_type = USER_PROCESS;
-               ut.ut_pid = pid;
+               ut.ut_pid = cxt.pid;
                if (cxt.hostname) {
                        xstrncpy(ut.ut_host, cxt.hostname, sizeof(ut.ut_host));
                        if (cxt.hostaddress[0])