Fixed safe_strcpy_truncated() to get rid of compiler warnings.

This commit is contained in:
Monty 2024-10-08 21:01:30 +03:00
parent 8b057fee62
commit 864847d1cc

View file

@ -285,12 +285,19 @@ static inline void safe_strcpy(char *dst, size_t dst_size, const char *src)
static inline int safe_strcpy_truncated(char *dst, size_t dst_size,
const char *src)
{
DBUG_ASSERT(dst_size > 0);
strncpy(dst, src, dst_size);
if (dst[dst_size - 1])
DBUG_ASSERT(dst_size > 0);
if (dst_size == 0)
return 1;
/*
We do not want to use strncpy() as we do not want to rely on
strncpy() filling the unused dst with 0.
We cannot use strmake() here as it in debug mode fills the buffers
with 'Z'.
*/
if (strnmov(dst, src, dst_size) == dst+dst_size)
{
dst[dst_size - 1]= 0;
dst[dst_size-1]= 0;
return 1;
}
return 0;
@ -306,7 +313,7 @@ static inline int safe_strcpy_truncated(char *dst, size_t dst_size,
static inline int safe_strcat(char *dst, size_t dst_size, const char *src)
{
size_t init_len= strlen(dst);
if (unlikely(init_len > dst_size))
if (unlikely(init_len >= dst_size))
return 1;
return safe_strcpy_truncated(dst + init_len, dst_size - init_len, src);
}