Commit a64291d5 authored by Arve Hjønnevåg's avatar Arve Hjønnevåg Committed by Sasha Levin

ANDROID: binder: Clear binder and cookie when setting handle in flat binder struct

[ Upstream commit 4afb604e ]

Prevents leaking pointers between processes
Signed-off-by: default avatarArve Hjønnevåg <arve@android.com>
Signed-off-by: default avatarMartijn Coenen <maco@android.com>
Cc: stable <stable@vger.kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarSasha Levin <alexander.levin@verizon.com>
parent 11924cba
...@@ -1578,7 +1578,9 @@ static void binder_transaction(struct binder_proc *proc, ...@@ -1578,7 +1578,9 @@ static void binder_transaction(struct binder_proc *proc,
fp->type = BINDER_TYPE_HANDLE; fp->type = BINDER_TYPE_HANDLE;
else else
fp->type = BINDER_TYPE_WEAK_HANDLE; fp->type = BINDER_TYPE_WEAK_HANDLE;
fp->binder = 0;
fp->handle = ref->desc; fp->handle = ref->desc;
fp->cookie = 0;
binder_inc_ref(ref, fp->type == BINDER_TYPE_HANDLE, binder_inc_ref(ref, fp->type == BINDER_TYPE_HANDLE,
&thread->todo); &thread->todo);
...@@ -1628,7 +1630,9 @@ static void binder_transaction(struct binder_proc *proc, ...@@ -1628,7 +1630,9 @@ static void binder_transaction(struct binder_proc *proc,
return_error = BR_FAILED_REPLY; return_error = BR_FAILED_REPLY;
goto err_binder_get_ref_for_node_failed; goto err_binder_get_ref_for_node_failed;
} }
fp->binder = 0;
fp->handle = new_ref->desc; fp->handle = new_ref->desc;
fp->cookie = 0;
binder_inc_ref(new_ref, fp->type == BINDER_TYPE_HANDLE, NULL); binder_inc_ref(new_ref, fp->type == BINDER_TYPE_HANDLE, NULL);
trace_binder_transaction_ref_to_ref(t, ref, trace_binder_transaction_ref_to_ref(t, ref,
new_ref); new_ref);
...@@ -1682,6 +1686,7 @@ static void binder_transaction(struct binder_proc *proc, ...@@ -1682,6 +1686,7 @@ static void binder_transaction(struct binder_proc *proc,
binder_debug(BINDER_DEBUG_TRANSACTION, binder_debug(BINDER_DEBUG_TRANSACTION,
" fd %d -> %d\n", fp->handle, target_fd); " fd %d -> %d\n", fp->handle, target_fd);
/* TODO: fput? */ /* TODO: fput? */
fp->binder = 0;
fp->handle = target_fd; fp->handle = target_fd;
} break; } break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment