]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/string/strcpy/: stpecpy(): Use strtcpy() instead of its pattern
authorAlejandro Colomar <alx@kernel.org>
Mon, 21 Jul 2025 14:56:34 +0000 (16:56 +0200)
committerAlejandro Colomar <foss+github@alejandro-colomar.es>
Fri, 15 May 2026 10:06:49 +0000 (12:06 +0200)
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/string/strcpy/stpecpy.h

index c46346b8f6efb21484cb3036b063e581f769abf3..c2471d4daaa6cb661772f8d63dab573a136fcdc2 100644 (file)
@@ -14,6 +14,7 @@
 #include <string.h>
 
 #include "attr.h"
+#include "string/strcpy/strtcpy.h"
 
 
 #if !defined(HAVE_STPECPY)
@@ -27,25 +28,16 @@ inline char *stpecpy(char *dst, const char *end, const char *restrict src);
 inline char *
 stpecpy(char *dst, const char *end, const char *restrict src)
 {
-       bool    trunc;
-       char    *p;
-       size_t  dsize, dlen, slen;
+       ssize_t  dlen;
 
        if (dst == NULL)
                return NULL;
 
-       dsize = end - dst;
-       slen = strnlen(src, dsize);
-       trunc = (slen == dsize);
-       dlen = slen - trunc;
-
-       p = stpcpy(mempcpy(dst, src, dlen), "");
-       if (trunc) {
-               errno = E2BIG;
+       dlen = strtcpy(dst, src, end - dst);
+       if (dlen == -1)
                return NULL;
-       }
 
-       return p;
+       return dst + dlen;
 }
 #endif