Ondřej Lysoněk 6848e2e
From 96698a525784ad91cb27b572dd5f871c183fdfa5 Mon Sep 17 00:00:00 2001
Ondřej Lysoněk 6848e2e
From: =?UTF-8?q?Ond=C5=99ej=20Lyson=C4=9Bk?= <olysonek@redhat.com>
Ondřej Lysoněk 6848e2e
Date: Sun, 28 Jul 2019 12:25:35 +0200
Ondřej Lysoněk 6848e2e
Subject: [PATCH 1/2] Set s_uwtmp_inserted only after record insertion/removal
Ondřej Lysoněk 6848e2e
Ondřej Lysoněk 6848e2e
pututxline() is the function that actually inserts the new record, so
Ondřej Lysoněk 6848e2e
setting 's_uwtmp_inserted' before calling pututxline() doesn't make
Ondřej Lysoněk 6848e2e
sense.
Ondřej Lysoněk 6848e2e
Ondřej Lysoněk 6848e2e
We'll need this change for other fixes.
Ondřej Lysoněk 6848e2e
---
Ondřej Lysoněk 6848e2e
 sysdeputil.c | 4 ++--
Ondřej Lysoněk 6848e2e
 1 file changed, 2 insertions(+), 2 deletions(-)
Ondřej Lysoněk 6848e2e
Ondřej Lysoněk 6848e2e
diff --git a/sysdeputil.c b/sysdeputil.c
Ondřej Lysoněk 6848e2e
index 4fe56c2..bd1e8c9 100644
Ondřej Lysoněk 6848e2e
--- a/sysdeputil.c
Ondřej Lysoněk 6848e2e
+++ b/sysdeputil.c
Ondřej Lysoněk 6848e2e
@@ -1224,7 +1224,6 @@ vsf_insert_uwtmp(const struct mystr* p_user_str,
Ondřej Lysoněk 6848e2e
                        sizeof(s_utent.ut_line));
Ondřej Lysoněk 6848e2e
     str_free(&line_str);
Ondřej Lysoněk 6848e2e
   }
Ondřej Lysoněk 6848e2e
-  s_uwtmp_inserted = 1;
Ondřej Lysoněk 6848e2e
   s_utent.ut_type = USER_PROCESS;
Ondřej Lysoněk 6848e2e
   s_utent.ut_pid = vsf_sysutil_getpid();
Ondřej Lysoněk 6848e2e
   vsf_sysutil_strcpy(s_utent.ut_user, str_getbuf(p_user_str),
Ondřej Lysoněk 6848e2e
@@ -1235,6 +1234,7 @@ vsf_insert_uwtmp(const struct mystr* p_user_str,
Ondřej Lysoněk 6848e2e
   setutxent();
Ondřej Lysoněk 6848e2e
   (void) pututxline(&s_utent);
Ondřej Lysoněk 6848e2e
   endutxent();
Ondřej Lysoněk 6848e2e
+  s_uwtmp_inserted = 1;
Ondřej Lysoněk 6848e2e
   updwtmpx(WTMPX_FILE, &s_utent);
Ondřej Lysoněk 6848e2e
 }
Ondřej Lysoněk 6848e2e
 
Ondřej Lysoněk 6848e2e
@@ -1245,7 +1245,6 @@ vsf_remove_uwtmp(void)
Ondřej Lysoněk 6848e2e
   {
Ondřej Lysoněk 6848e2e
     return;
Ondřej Lysoněk 6848e2e
   }
Ondřej Lysoněk 6848e2e
-  s_uwtmp_inserted = 0;
Ondřej Lysoněk 6848e2e
   s_utent.ut_type = DEAD_PROCESS;
Ondřej Lysoněk 6848e2e
   vsf_sysutil_memclr(s_utent.ut_user, sizeof(s_utent.ut_user));
Ondřej Lysoněk 6848e2e
   vsf_sysutil_memclr(s_utent.ut_host, sizeof(s_utent.ut_host));
Ondřej Lysoněk 6848e2e
@@ -1253,6 +1252,7 @@ vsf_remove_uwtmp(void)
Ondřej Lysoněk 6848e2e
   setutxent();
Ondřej Lysoněk 6848e2e
   (void) pututxline(&s_utent);
Ondřej Lysoněk 6848e2e
   endutxent();
Ondřej Lysoněk 6848e2e
+  s_uwtmp_inserted = 0;
Ondřej Lysoněk 6848e2e
   s_utent.ut_tv.tv_sec = vsf_sysutil_get_time_sec();
Ondřej Lysoněk 6848e2e
   updwtmpx(WTMPX_FILE, &s_utent);
Ondřej Lysoněk 6848e2e
 }
Ondřej Lysoněk 6848e2e
-- 
Ondřej Lysoněk 6848e2e
2.20.1
Ondřej Lysoněk 6848e2e