aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/bpf/syscall.c
diff options
context:
space:
mode:
authorMartin KaFai Lau <kafai@fb.com>2017-10-06 00:52:11 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-07 18:29:39 -0400
commit473d97343f94ff20f5196078314e4dd83156d3a2 (patch)
tree0b740f409d0dd6eea79ff5b16c0711232d4e0e61 /kernel/bpf/syscall.c
parentf192970de860d3ab90aa9e2a22853201a57bde78 (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.c5
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