patch "binder: fix incorrect calculation for num_valid" added to char-misc-linus
Subsystems (2)
This is a note to let you know that I've just added the patch titled
binder: fix incorrect calculation for num_valid
to my char-misc git tree which can be found at
git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/char-misc.git
in the char-misc-linus branch.
The patch will show up in the next release of the linux-next tree (usually sometime within the next 24 hours during the week.)
The patch will hopefully also be merged in Linus's tree for the next -rc kernel release.
If you have any questions about this process, please let me know.
From 16981742717b04644a41052570fb502682a315d2 Mon Sep 17 00:00:00 2001
From: Todd Kjos <[email protected]>
Date: Fri, 13 Dec 2019 12:25:31 -0800
Subject: binder: fix incorrect calculation for num_valid
For BINDER_TYPE_PTR and BINDER_TYPE_FDA transactions, the num_valid local was calculated incorrectly causing the range check in binder_validate_ptr() to miss out-of-bounds offsets.
--- drivers/android/binder.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
drivers/android/binder.c +2 -2
@@ -3310,7 +3310,7 @@ static void binder_transaction(struct binder_proc *proc,binder_size_t parent_offset;struct binder_fd_array_object *fda =to_binder_fd_array_object (hdr); -size_t num_valid = (buffer_offset - off_start_offset) * +size_t num_valid = (buffer_offset - off_start_offset) /sizeof (binder_size_t);struct binder_buffer_object *parent = binder_validate_ptr(target_proc, t->buffer,
@@ -3384,7 +3384,7 @@ static void binder_transaction(struct binder_proc *proc, t->buffer->user_data + sg_buf_offset; sg_buf_offset +=ALIGN (bp->length,sizeof (u64)); - num_valid = (buffer_offset - off_start_offset) * + num_valid = (buffer_offset - off_start_offset) /sizeof (binder_size_t); ret = binder_fixup_parent(t, thread, bp, off_start_offset,
Signature · 1 line
2.24.1