bpf: off by one in check_map_func_compatibility()
Subsystems (5)
PATCH 1/1 bpf: off by one in check_map_func_compatibility()
The loop iterates one space too far, so we might read beyond the end of the func_limit[] array.
Fixes 35578d798400 ('bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter')
Signed-off-by Dan Carpenter <[email protected]>
kernel/bpf/verifier.c +1 -1
@@ -853,7 +853,7 @@ static int check_map_func_compatibility(struct bpf_map *map, int func_id)if (!map)return 0 ; -for (i =0 ; i <=ARRAY_SIZE (func_limit); i++) { +for (i =0 ; i <ARRAY_SIZE (func_limit); i++) { bool_map = (map->map_type = func_limit[i].map_type); bool_func = (func_id = func_limit[i].func_id);/* only when map & func pair match it can continue.
Daniel Borkmann
maintainerQuoted 5 lines · Dan Carpenter
The loop iterates one space too far, so we might read beyond the end of the func_limit[] array.
Fixes 35578d798400 ('bpf: Implement function bpf_perf_event_read() that get the selected hardware PMU conuter')Signed-off-by Dan Carpenter <[email protected]>
Thanks for the fix, Dan!
There's however already one queued up here:
Quoted 18 lines
kernel/bpf/verifier.c +1
-2@@ -853,7 +853,7 @@ static int check_map_func_compatibility(struct bpf_map *map, int func_id)if (!map)return 0 ; -for (i =0 ; i <=ARRAY_SIZE (func_limit); i++) { +for (i =0 ; i <ARRAY_SIZE (func_limit); i++) { bool_map = (map->map_type = func_limit[i].map_type); bool_func = (func_id = func_limit[i].func_id);/* only when map & func pair match it can continue. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html