strlcpy(3) Library Functions Manual strlcpy(3)

strlcpy, strlcat - string return-hypothetical-non-truncated-length copy/catenate (with truncation)

Standard C library (libc-lc)

#include <string.h>
size_t strlcpy(size_t dsize;
               char dst[restrict dsize], const char *restrict src,
               size_t dsize);
size_t strlcat(size_t dsize;
               char dst[restrict dsize], const char *restrict src,
               size_t dsize);

strlcpy() copies the string pointed to by src, into a string at the buffer pointed to by dst.

strlcat() catenates the string pointed to by src, after the string pointed to by dst (overwriting its terminating null byte).

For both functions, if the string doesn't fit in the buffer, it is truncated.

These functions return the total length of the string they tried to create, as if truncation didn't happen.

POSIX.1-2024.

OpenBSD 2.4, POSIX.1-2024, glibc 2.38.

These functions are vulnerable to denial of service (DoS) attacks, since they read the entire source string.

strscpy(9) is a better function for copying with truncation, as it doesn't have that issue. It's not provided by libc, so users should write their own implementation.

strlcpy(3), strcpy(3), string(3)

2026-07-11 Linux man-pages 6.19