summaryrefslogtreecommitdiffstats
path: root/login-utils
diff options
context:
space:
mode:
authorKarel Zak2018-10-03 17:08:11 +0200
committerKarel Zak2018-10-03 17:08:11 +0200
commitac5c12fdc2230f8decdd930bb9c089d5e1f89236 (patch)
tree9e4a49e744955ae3bc46581dd099e7a580629d3e /login-utils
parentmkfs.cramfs: properly copy disk name (diff)
downloadkernel-qcow2-util-linux-ac5c12fdc2230f8decdd930bb9c089d5e1f89236.tar.gz
kernel-qcow2-util-linux-ac5c12fdc2230f8decdd930bb9c089d5e1f89236.tar.xz
kernel-qcow2-util-linux-ac5c12fdc2230f8decdd930bb9c089d5e1f89236.zip
login: cleanup code to copy to log strings
man utmp: String fields are terminated by a null byte ('\0') if they are shorter than the size of the field. Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'login-utils')
-rw-r--r--login-utils/login.c24
1 files changed, 12 insertions, 12 deletions
diff --git a/login-utils/login.c b/login-utils/login.c
index 9aef3d804..23b62b8d0 100644
--- a/login-utils/login.c
+++ b/login-utils/login.c
@@ -437,14 +437,14 @@ static void log_btmp(struct login_context *cxt)
memset(&ut, 0, sizeof(ut));
- strncpy(ut.ut_user,
+ str2memcpy(ut.ut_user,
cxt->username ? cxt->username : "(unknown)",
sizeof(ut.ut_user));
if (cxt->tty_number)
- strncpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
+ str2memcpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
if (cxt->tty_name)
- xstrncpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
+ str2memcpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
gettimeofday(&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
@@ -454,7 +454,7 @@ static void log_btmp(struct login_context *cxt)
ut.ut_pid = cxt->pid;
if (cxt->hostname) {
- xstrncpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host));
+ str2memcpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host));
if (*cxt->hostaddress)
memcpy(&ut.ut_addr_v6, cxt->hostaddress,
sizeof(ut.ut_addr_v6));
@@ -541,9 +541,9 @@ static void log_lastlog(struct login_context *cxt)
ll.ll_time = t; /* ll_time is always 32bit */
if (cxt->tty_name)
- xstrncpy(ll.ll_line, cxt->tty_name, sizeof(ll.ll_line));
+ str2memcpy(ll.ll_line, cxt->tty_name, sizeof(ll.ll_line));
if (cxt->hostname)
- xstrncpy(ll.ll_host, cxt->hostname, sizeof(ll.ll_host));
+ str2memcpy(ll.ll_host, cxt->hostname, sizeof(ll.ll_host));
if (write_all(fd, (char *)&ll, sizeof(ll)))
warn(_("write lastlog failed"));
@@ -585,7 +585,7 @@ static void log_utmp(struct login_context *cxt)
if (utp == NULL && cxt->tty_name) {
setutxent();
ut.ut_type = LOGIN_PROCESS;
- strncpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
+ str2memcpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
utp = getutxline(&ut);
}
@@ -594,7 +594,7 @@ static void log_utmp(struct login_context *cxt)
if (utp == NULL && cxt->tty_number) {
setutxent();
ut.ut_type = DEAD_PROCESS;
- strncpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
+ str2memcpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
utp = getutxid(&ut);
}
@@ -605,11 +605,11 @@ static void log_utmp(struct login_context *cxt)
memset(&ut, 0, sizeof(ut));
if (cxt->tty_number && ut.ut_id[0] == 0)
- strncpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
+ str2memcpy(ut.ut_id, cxt->tty_number, sizeof(ut.ut_id));
if (cxt->username)
- strncpy(ut.ut_user, cxt->username, sizeof(ut.ut_user));
+ str2memcpy(ut.ut_user, cxt->username, sizeof(ut.ut_user));
if (cxt->tty_name)
- xstrncpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
+ str2memcpy(ut.ut_line, cxt->tty_name, sizeof(ut.ut_line));
gettimeofday(&tv, NULL);
ut.ut_tv.tv_sec = tv.tv_sec;
@@ -617,7 +617,7 @@ static void log_utmp(struct login_context *cxt)
ut.ut_type = USER_PROCESS;
ut.ut_pid = cxt->pid;
if (cxt->hostname) {
- xstrncpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host));
+ str2memcpy(ut.ut_host, cxt->hostname, sizeof(ut.ut_host));
if (*cxt->hostaddress)
memcpy(&ut.ut_addr_v6, cxt->hostaddress,
sizeof(ut.ut_addr_v6));