From: Iker Pedrosa Date: Tue, 18 Jul 2023 14:48:02 +0000 (+0200) Subject: utmp: move `update_utmp` X-Git-Tag: 4.14.0-rc1~10 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6b7108e347f35db04cf21024868ee0482c5090be;p=thirdparty%2Fshadow.git utmp: move `update_utmp` The functionality from this function is related to utmp. Restrict access to `setutmp()` to the same file. Signed-off-by: Iker Pedrosa --- diff --git a/lib/prototypes.h b/lib/prototypes.h index 46b7d028f..d288a038b 100644 --- a/lib/prototypes.h +++ b/lib/prototypes.h @@ -490,7 +490,6 @@ extern struct utmp *prepare_utmp (const char *name, const char *line, const char *host, /*@null@*/const struct utmp *ut); -extern int setutmp (struct utmp *ut); /* * failtmp - update the cumulative failure log * @@ -498,6 +497,18 @@ extern int setutmp (struct utmp *ut); * maintains a record of all login failures. */ extern void failtmp (const char *username, const struct utmp *); +/** + * @brief Update or create an utmp entry in utmp, wtmp, utmpw, or wtmpx + * + * @param[in] user username + * @param[in] tty tty + * @param[in] host hostname + * @param[in] utent utmp entry + */ +extern void update_utmp (const char *user, + const char *tty, + const char *host, + /*@null@*/const struct utmp *utent); /* valid.c */ extern bool valid (const char *, const struct passwd *); diff --git a/libmisc/utmp.c b/libmisc/utmp.c index 7441cbf8c..4ffaedc53 100644 --- a/libmisc/utmp.c +++ b/libmisc/utmp.c @@ -339,7 +339,7 @@ static void updwtmp (const char *filename, const struct utmp *ut) * * Return 1 on failure and 0 on success. */ -int setutmp (struct utmp *ut) +static int setutmp (struct utmp *ut) { int err = 0; @@ -358,3 +358,14 @@ int setutmp (struct utmp *ut) return err; } + +void update_utmp (const char *user, + const char *tty, + const char *host, + /*@null@*/const struct utmp *utent) +{ + struct utmp *ut = prepare_utmp (user, tty, host, utent); + + (void) setutmp (ut); /* make entry in the utmp & wtmp files */ + free (ut); +} diff --git a/src/login.c b/src/login.c index 58d691267..749747b26 100644 --- a/src/login.c +++ b/src/login.c @@ -109,10 +109,6 @@ static void usage (void); static void setup_tty (void); static void process_flags (int argc, char *const *argv); static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *user); -static void update_utmp (const char *user, - const char *tty, - const char *host, - /*@null@*/const struct utmp *utent); #ifndef USE_PAM static struct faillog faillog; @@ -458,24 +454,6 @@ static /*@observer@*/const char *get_failent_user (/*@returned@*/const char *use return failent_user; } -/* - * update_utmp - Update or create an utmp entry in utmp, wtmp, utmpw, and - * wtmpx - * - * utent should be the utmp entry returned by get_current_utmp (or - * NULL). - */ -static void update_utmp (const char *user, - const char *tty, - const char *host, - /*@null@*/const struct utmp *utent) -{ - struct utmp *ut = prepare_utmp (user, tty, host, utent); - - (void) setutmp (ut); /* make entry in the utmp & wtmp files */ - free (ut); -} - /* * login - create a new login session for a user *