summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDongdong Zhang <[email protected]>2025-02-19 09:57:26 +0800
committerAnup Patel <[email protected]>2025-03-23 18:38:57 +0530
commit56341e95aed220c114f28cfea8e2e62e1366f50b (patch)
tree1fde4269adbdf32e7b6c51d3ca3cb765a5777a7c /lib
parent0b78665a6c51a7b8b6da31e05590e6fd810d07e2 (diff)
lib: sbi: Fix potential garbage data in string copy functions
In the original implementation of `sbi_strcpy` and `sbi_strncpy`, if the destination buffer (`dest`) was longer than the source string (`src`), the functions did not ensure that the remaining bytes in `dest` were properly null-terminated. This could result in garbage data being present in the destination buffer after the copy operation, as the functions only copied characters from `src` without explicitly terminating `dest`. Signed-off-by: Dongdong Zhang <[email protected]> Reviewed-by: Xiang W <[email protected]> Reviewed-by: Anup Patel <[email protected]>
Diffstat (limited to 'lib')
-rw-r--r--lib/sbi/sbi_string.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/sbi/sbi_string.c b/lib/sbi/sbi_string.c
index 9ebea693..f4f13942 100644
--- a/lib/sbi/sbi_string.c
+++ b/lib/sbi/sbi_string.c
@@ -68,22 +68,22 @@ char *sbi_strcpy(char *dest, const char *src)
{
char *ret = dest;
- while (*src != '\0') {
- *dest++ = *src++;
+ while ((*dest++ = *src++) != '\0') {
}
-
return ret;
}
char *sbi_strncpy(char *dest, const char *src, size_t count)
{
- char *ret = dest;
+ char *tmp = dest;
- while (count-- && *src != '\0') {
- *dest++ = *src++;
+ while (count) {
+ if ((*tmp = *src) != 0)
+ src++;
+ tmp++;
+ count--;
}
-
- return ret;
+ return dest;
}
char *sbi_strchr(const char *s, int c)