summaryrefslogtreecommitdiff
path: root/net/6lowpan
diff options
context:
space:
mode:
authorJohn Fastabend <john.fastabend@gmail.com>2020-01-11 06:12:02 +0000
committerDaniel Borkmann <daniel@iogearbox.net>2020-01-15 23:26:13 +0100
commit6562e29cf6f0ddd368657d97a8d484ffc30df5ef (patch)
tree0e79287aa56874db12b7a7dff266d0cab47c067f /net/6lowpan
parent33bfe20dd7117dd81fd896a53f743a233e1ad64f (diff)
bpf: Sockmap, skmsg helper overestimates push, pull, and pop bounds
In the push, pull, and pop helpers operating on skmsg objects to make data writable or insert/remove data we use this bounds check to ensure specified data is valid, /* Bounds checks: start and pop must be inside message */ if (start >= offset + l || last >= msg->sg.size) return -EINVAL; The problem here is offset has already included the length of the current element the 'l' above. So start could be past the end of the scatterlist element in the case where start also points into an offset on the last skmsg element. To fix do the accounting slightly different by adding the length of the previous entry to offset at the start of the iteration. And ensure its initialized to zero so that the first iteration does nothing. Fixes: 604326b41a6fb ("bpf, sockmap: convert to generic sk_msg interface") Fixes: 6fff607e2f14b ("bpf: sk_msg program helper bpf_msg_push_data") Fixes: 7246d8ed4dcce ("bpf: helper to pop data from messages") Signed-off-by: John Fastabend <john.fastabend@gmail.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Song Liu <songliubraving@fb.com> Cc: stable@vger.kernel.org Link: https://lore.kernel.org/bpf/20200111061206.8028-5-john.fastabend@gmail.com
Diffstat (limited to 'net/6lowpan')
0 files changed, 0 insertions, 0 deletions