blob: 17f720c60f177aeaf9e37221cdaa29482f0ef249 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include <assert.h>
#include <kmalloc.h>
#include <mmu.h>
#include <stddef.h>
#include <string.h>
char *copy_and_allocate_string(const char *s) {
size_t l = strlen(s) + 1;
char *r = kmalloc(l);
if (!r) {
return NULL;
}
memcpy(r, s, l);
return r;
}
char *copy_and_allocate_user_string(const char *s) {
size_t len;
if (!mmu_is_valid_user_c_string(s, &len)) {
return NULL;
}
size_t real_len = strlen(s);
assert(real_len == len);
len = real_len;
char *r = kmalloc(len + 1);
if (!r) {
return NULL;
}
memcpy(r, s, len + 1);
return r;
}
|