summaryrefslogtreecommitdiff
path: root/kernel/libc/string
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-04-15 20:34:58 +0200
committerAnton Kling <anton@kling.gg>2024-04-15 20:34:58 +0200
commit62ba2a9ab01e5f2a9b1cd325af8d3112702b7713 (patch)
tree0926fbbc9d8c0058ee0f37e4f8691a554ca647e3 /kernel/libc/string
parent3acd8cf6c8e41c1e1228c60ac5c4ea0f69e7aff5 (diff)
Bug fix and cleanup.
Diffstat (limited to 'kernel/libc/string')
-rw-r--r--kernel/libc/string/copy.c9
-rw-r--r--kernel/libc/string/strncpy.c11
2 files changed, 5 insertions, 15 deletions
diff --git a/kernel/libc/string/copy.c b/kernel/libc/string/copy.c
index 11cd664..4acbbf4 100644
--- a/kernel/libc/string/copy.c
+++ b/kernel/libc/string/copy.c
@@ -4,12 +4,13 @@
#include <string.h>
char *copy_and_allocate_string(const char *s) {
- size_t l = strlen(s);
- char *r = kmalloc(l + 1);
+ size_t l = strlen(s) + 1;
+ char *r = kmalloc(l);
if (!r) {
return NULL;
}
- return strncpy(r, s, l);
+ memcpy(r, s, l);
+ return r;
}
char *copy_and_allocate_user_string(const char *s) {
@@ -24,6 +25,6 @@ char *copy_and_allocate_user_string(const char *s) {
if (!r) {
return NULL;
}
- strlcpy(r, s, len);
+ memcpy(r, s, len+1);
return r;
}
diff --git a/kernel/libc/string/strncpy.c b/kernel/libc/string/strncpy.c
deleted file mode 100644
index a886895..0000000
--- a/kernel/libc/string/strncpy.c
+++ /dev/null
@@ -1,11 +0,0 @@
-#include <stddef.h>
-#include <string.h>
-
-// FIXME: Something is weird with this function
-char *strncpy(char *dest, const char *src, size_t n) {
- char *r = dest;
- for (; n && (*dest = *src); n--, src++, dest++)
- ;
- *dest = '\0';
- return r;
-}