Added bounds check to strcat.

This commit is contained in:
Leonardo Zide
2025-12-15 11:19:23 -03:00
parent a08dede88b
commit c2db2d8d45
6 changed files with 50 additions and 11 deletions
+36 -5
View File
@@ -30,12 +30,12 @@ char* lcstrupr(char* string)
return string;
}
size_t lcstrcpy(char* dest, const char* source, size_t count)
size_t lcstrcpy(char* dest, const char* source, size_t size)
{
if (count == 0)
if (size == 0)
return 0;
for (size_t i = 0; i < count; i++)
for (size_t i = 0; i < size; i++)
{
dest[i] = source[i];
@@ -45,7 +45,38 @@ size_t lcstrcpy(char* dest, const char* source, size_t count)
}
}
dest[--count] = '\0';
dest[--size] = '\0';
return count;
return size;
}
size_t lcstrcat(char* dest, const char* source, size_t size)
{
char* d = dest;
const char* s = source;
size_t n = size;
size_t dlen;
while (n-- != 0 && *d != '\0')
d++;
dlen = d - dest;
n = size - dlen;
if (n == 0)
return(dlen + strlen(s));
while (*s != '\0')
{
if (n != 1)
{
*d++ = *s;
n--;
}
s++;
}
*d = '\0';
return (dlen + (s - source));
}