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 <ipedrosa@redhat.com>
This commit is contained in:
Iker Pedrosa
2023-07-18 16:48:02 +02:00
committed by Serge Hallyn
parent b6ca83ea4c
commit 6b7108e347
3 changed files with 24 additions and 24 deletions

View File

@@ -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 *);

View File

@@ -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);
}

View File

@@ -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
*