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 04aa3cfa..6ab1701f 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 0ec2692c..7f116f3b 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),