diff options
author | Martin KaFai Lau <kafai@fb.com> | 2017-10-06 00:52:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-10-07 18:29:39 -0400 |
commit | 473d97343f94ff20f5196078314e4dd83156d3a2 (patch) | |
tree | 0b740f409d0dd6eea79ff5b16c0711232d4e0e61 /kernel/bpf/syscall.c | |
parent | f192970de860d3ab90aa9e2a22853201a57bde78 (diff) |
bpf: Change bpf_obj_name_cpy() to better ensure map's name is init by 0
During get_info_by_fd, the prog/map name is memcpy-ed. It depends
on the prog->aux->name and map->name to be zero initialized.
bpf_prog_aux is easy to guarantee that aux->name is zero init.
The name in bpf_map may be harder to be guaranteed in the future when
new map type is added.
Hence, this patch makes bpf_obj_name_cpy() to always zero init
the prog/map name.
Suggested-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Daniel Borkmann <daniel@iogearbox.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'kernel/bpf/syscall.c')
-rw-r--r-- | kernel/bpf/syscall.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/kernel/bpf/syscall.c b/kernel/bpf/syscall.c index 0048cb24ba7b..d124e702e040 100644 --- a/kernel/bpf/syscall.c +++ b/kernel/bpf/syscall.c | |||
@@ -322,6 +322,8 @@ static int bpf_obj_name_cpy(char *dst, const char *src) | |||
322 | { | 322 | { |
323 | const char *end = src + BPF_OBJ_NAME_LEN; | 323 | const char *end = src + BPF_OBJ_NAME_LEN; |
324 | 324 | ||
325 | memset(dst, 0, BPF_OBJ_NAME_LEN); | ||
326 | |||
325 | /* Copy all isalnum() and '_' char */ | 327 | /* Copy all isalnum() and '_' char */ |
326 | while (src < end && *src) { | 328 | while (src < end && *src) { |
327 | if (!isalnum(*src) && *src != '_') | 329 | if (!isalnum(*src) && *src != '_') |
@@ -333,9 +335,6 @@ static int bpf_obj_name_cpy(char *dst, const char *src) | |||
333 | if (src == end) | 335 | if (src == end) |
334 | return -EINVAL; | 336 | return -EINVAL; |
335 | 337 | ||
336 | /* '\0' terminates dst */ | ||
337 | *dst = 0; | ||
338 | |||
339 | return 0; | 338 | return 0; |
340 | } | 339 | } |
341 | 340 | ||