w: make sure null terminated ut_* strings are used
strncpy does not null terminate a string if it has the maximal length. Use always the null terminated variants for ut_user and ut_line. Signed-off-by: Thorsten Kukuk <kukuk@suse.com>
This commit is contained in:
parent
133a833942
commit
cced1e49ef
8
src/w.c
8
src/w.c
@ -32,8 +32,6 @@
|
|||||||
#include <getopt.h>
|
#include <getopt.h>
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <locale.h>
|
|
||||||
#include <pwd.h>
|
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -490,9 +488,10 @@ static void showinfo(
|
|||||||
|
|
||||||
/* force NUL term for printf */
|
/* force NUL term for printf */
|
||||||
strncpy(uname, u->ut_user, UT_NAMESIZE);
|
strncpy(uname, u->ut_user, UT_NAMESIZE);
|
||||||
|
uname[UT_NAMESIZE] = '\0';
|
||||||
|
|
||||||
if (formtype) {
|
if (formtype) {
|
||||||
printf("%-*.*s%-9.8s", userlen + 1, userlen, uname, u->ut_line);
|
printf("%-*.*s%-9.8s", userlen + 1, userlen, uname, tty + 5);
|
||||||
if (from)
|
if (from)
|
||||||
print_from(u, ip_addresses, fromlen);
|
print_from(u, ip_addresses, fromlen);
|
||||||
#ifdef HAVE_UTMPX_H
|
#ifdef HAVE_UTMPX_H
|
||||||
@ -514,8 +513,7 @@ static void showinfo(
|
|||||||
else
|
else
|
||||||
printf(" ? ");
|
printf(" ? ");
|
||||||
} else {
|
} else {
|
||||||
printf("%-*.*s%-9.8s", userlen + 1, userlen, u->ut_user,
|
printf("%-*.*s%-9.8s", userlen + 1, userlen, uname, tty + 5);
|
||||||
u->ut_line);
|
|
||||||
if (from)
|
if (from)
|
||||||
print_from(u, ip_addresses, fromlen);
|
print_from(u, ip_addresses, fromlen);
|
||||||
if (*u->ut_line == ':')
|
if (*u->ut_line == ':')
|
||||||
|
Loading…
Reference in New Issue
Block a user