Alexei Starovoitov bb7f0f989c bpf: fix integer overflows
There were various issues related to the limited size of integers used in
the verifier:
 - `off + size` overflow in __check_map_access()
 - `off + reg->off` overflow in check_mem_access()
 - `off + reg->var_off.value` overflow or 32-bit truncation of
   `reg->var_off.value` in check_mem_access()
 - 32-bit truncation in check_stack_boundary()

Make sure that any integer math cannot overflow by not allowing
pointer math with large values.

Also reduce the scope of "scalar op scalar" tracking.

Fixes: f1174f77b50c ("bpf/verifier: rework value tracking")
Reported-by: Jann Horn <jannh@google.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
2017-12-21 02:15:41 +01:00
..
2017-12-21 02:15:41 +01:00
2017-05-23 10:01:37 +02:00
2017-08-16 16:48:34 -07:00
2017-11-15 13:28:48 -08:00
2017-11-15 13:28:48 -08:00
2017-05-18 10:30:19 -06:00
2017-12-14 16:00:49 -08:00
2017-11-17 16:10:04 -08:00
2017-12-14 16:00:48 -08:00
2017-10-20 11:02:29 +02:00
2017-11-17 16:10:04 -08:00
2017-11-17 16:10:04 -08:00
2017-11-17 16:10:04 -08:00
2017-11-15 18:21:05 -08:00
2017-11-15 10:56:56 -08:00
2017-11-17 16:10:03 -08:00
2017-10-31 17:22:58 -05:00