]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
utmp: call prepare_utmp() even if utent is NULL
authorIker Pedrosa <ipedrosa@redhat.com>
Fri, 15 Sep 2023 07:55:02 +0000 (09:55 +0200)
committerAlejandro Colomar <alx@kernel.org>
Sun, 29 Oct 2023 23:00:19 +0000 (00:00 +0100)
update_utmp() should also return 0 when success.

Fixes: 1f368e1c1838de9d476a36897d7c53394569de08 ("utmp: update
`update_utmp()")
Resolves: https://github.com/shadow-maint/shadow/issues/805

Signed-off-by: Iker Pedrosa <ipedrosa@redhat.com>
Cherry-picked-from: 5178f8c5afb612f6ddf5363823547e080e7f546b
Link: <https://github.com/shadow-maint/shadow/issues/805>
Link: <https://github.com/shadow-maint/shadow/pull/808>
Reviewed-by: Michael Vetter <jubalh@iodoru.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/utmp.c

index 7c7da6971ab5c884579ebb039ae5f844cae88746..99833c4f3bf4a7589b891478cd641961b6848795 100644 (file)
@@ -368,17 +368,16 @@ int update_utmp (const char *user,
        struct utmp *utent, *ut;
 
        utent = get_current_utmp ();
-       if (utent == NULL) {
-               return -1;
-       }
-
        ut = prepare_utmp  (user, tty, host, utent);
 
        (void) setutmp  (ut);   /* make entry in the utmp & wtmp files */
-       free (utent);
+
+       if (utent != NULL) {
+               free (utent);
+       }
        free (ut);
 
-       return 1;
+       return 0;
 }
 
 void record_failure(const char *failent_user,