From ce30dfe255c65f012eb383e6fb54ce68473a91fa Mon Sep 17 00:00:00 2001 From: Alejandro Colomar Date: Wed, 15 Nov 2023 22:36:19 +0100 Subject: [PATCH] lib/: Use STRNCPY() instead of strncpy(3) We've recently fixed several bugs in the calculation of the size in this function call. Use this wrapper to prevent similar mistakes in the future. Signed-off-by: Alejandro Colomar --- lib/log.c | 3 ++- lib/utmp.c | 13 +++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/log.c b/lib/log.c index 04aa3cfab..6ab1701fa 100644 --- a/lib/log.c +++ b/lib/log.c @@ -19,6 +19,7 @@ #include #include "memzero.h" #include "prototypes.h" +#include "strncpy.h" #include "strtcpy.h" @@ -82,7 +83,7 @@ void dolastlog ( newlog.ll_time = ll_time; STRTCPY(newlog.ll_line, line); #if HAVE_LL_HOST - strncpy(newlog.ll_host, host, sizeof(newlog.ll_host)); + STRNCPY(newlog.ll_host, host); #endif if ( (lseek (fd, offset, SEEK_SET) != offset) || (write_full(fd, &newlog, sizeof newlog) == -1) diff --git a/lib/utmp.c b/lib/utmp.c index 0ec2692cc..7f116f3b7 100644 --- a/lib/utmp.c +++ b/lib/utmp.c @@ -25,6 +25,7 @@ #include "alloc.h" #include "sizeof.h" #include "strtcpy.h" +#include "strncpy.h" #include "zustr2stp.h" #ident "$Id$" @@ -262,25 +263,25 @@ static utent->ut_type = USER_PROCESS; #endif /* HAVE_STRUCT_UTMP_UT_TYPE */ utent->ut_pid = getpid (); - strncpy(utent->ut_line, line, sizeof(utent->ut_line)); + STRNCPY(utent->ut_line, line); #ifdef HAVE_STRUCT_UTMP_UT_ID if (NULL != ut) { - strncpy (utent->ut_id, ut->ut_id, sizeof (utent->ut_id)); + STRNCPY(utent->ut_id, ut->ut_id); } else { /* XXX - assumes /dev/tty?? */ - strncpy(utent->ut_id, line + 3, sizeof(utent->ut_id)); + STRNCPY(utent->ut_id, line + 3); } #endif /* HAVE_STRUCT_UTMP_UT_ID */ #ifdef HAVE_STRUCT_UTMP_UT_NAME - strncpy (utent->ut_name, name, sizeof (utent->ut_name)); + STRNCPY(utent->ut_name, name); #endif /* HAVE_STRUCT_UTMP_UT_NAME */ #ifdef HAVE_STRUCT_UTMP_UT_USER - strncpy(utent->ut_user, name, sizeof(utent->ut_user)); + STRNCPY(utent->ut_user, name); #endif /* HAVE_STRUCT_UTMP_UT_USER */ if (NULL != hostname) { struct addrinfo *info = NULL; #ifdef HAVE_STRUCT_UTMP_UT_HOST - strncpy(utent->ut_host, hostname, sizeof(utent->ut_host)); + STRNCPY(utent->ut_host, hostname); #endif /* HAVE_STRUCT_UTMP_UT_HOST */ #ifdef HAVE_STRUCT_UTMP_UT_SYSLEN utent->ut_syslen = MIN (strlen (hostname), -- 2.47.2