diff options
| author | Arve Hjønnevåg <arve@android.com> | 2016-08-12 16:04:28 -0700 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2016-11-07 13:46:54 +0100 |
| commit | 253f506b79c2b2bc5440715aa625cc61a40295e9 (patch) | |
| tree | d6e53b0c2e3ccb7832b632b24634cf580c78a9cd /drivers/android | |
| parent | 3fc8736abbeda275b90b099a414fbcd4ae06fa1e (diff) | |
ANDROID: binder: Clear binder and cookie when setting handle in flat binder struct
Prevents leaking pointers between processes
BUG: 30768347
Change-Id: Id898076926f658a1b8b27a3ccb848756b36de4ca
Signed-off-by: Arve Hjønnevåg <arve@android.com>
Ticket: PORRIDGE-499
Diffstat (limited to 'drivers/android')
| -rw-r--r-- | drivers/android/binder.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/android/binder.c b/drivers/android/binder.c index 72a04bd2b..bb095ed42 100644 --- a/drivers/android/binder.c +++ b/drivers/android/binder.c @@ -2910,7 +2910,9 @@ out_err: fp->type = BINDER_TYPE_HANDLE; else fp->type = BINDER_TYPE_WEAK_HANDLE; + fp->binder = 0; fp->handle = ref->desc; + fp->cookie = 0; binder_inc_ref(ref, fp->type == BINDER_TYPE_HANDLE, &thread->todo); @@ -2958,7 +2960,9 @@ out_err: return_error = BR_FAILED_REPLY; goto err_binder_get_ref_for_node_failed; } + fp->binder = 0; fp->handle = new_ref->desc; + fp->cookie = 0; binder_inc_ref(new_ref, fp->type == BINDER_TYPE_HANDLE, NULL); trace_binder_transaction_ref_to_ref(t, ref, new_ref); @@ -3017,6 +3021,7 @@ out_err: binder_debug(BINDER_DEBUG_TRANSACTION, " fd %d -> %d\n", fp->handle, target_fd); /* TODO: fput? */ + fp->binder = 0; fp->handle = target_fd; #ifdef BINDER_MONITOR e->fd = target_fd; |
