From: Alejandro Colomar Date: Wed, 15 Nov 2023 21:36:19 +0000 (+0100) Subject: lib/: Use STRNCPY() instead of strncpy(3) X-Git-Tag: 4.15.0-rc1~120 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ce30dfe255c65f012eb383e6fb54ce68473a91fa;p=thirdparty%2Fshadow.git 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 --- 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),