lib: string: Implement strlcat

This introduces strlcat, which provides a safer interface than strncat. It
never copies more than its size bytes, including the terminating nul. In
addition, it never reads past dest[size - 1], even if dest is not
nul-terminated.

This also removes the stub for dwc3 now that we have a proper
implementation.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Sean Anderson
2021-03-11 00:15:42 -05:00
committed by Tom Rini
parent d3358ecc54
commit 9af869c414
3 changed files with 22 additions and 6 deletions

View File

@@ -180,6 +180,25 @@ char * strncat(char *dest, const char *src, size_t count)
}
#endif
#ifndef __HAVE_ARCH_STRLCAT
/**
* strlcat - Append a length-limited, %NUL-terminated string to another
* @dest: The string to be appended to
* @src: The string to append to it
* @size: The size of @dest
*
* Compatible with *BSD: the result is always a valid NUL-terminated string that
* fits in the buffer (unless, of course, the buffer size is zero). It does not
* write past @size like strncat() does.
*/
size_t strlcat(char *dest, const char *src, size_t size)
{
size_t len = strnlen(dest, size);
return len + strlcpy(dest + len, src, size - len);
}
#endif
#ifndef __HAVE_ARCH_STRCMP
/**
* strcmp - Compare two strings