On Tue, Nov 23, 2021 at 11:17:35AM -0800, Todd Kjos wrote: > Transactions are copied from the sender to the target > first and objects like BINDER_TYPE_PTR and BINDER_TYPE_FDA > are then fixed up. This means there is a short period where > the sender's version of these objects are visible to the > target prior to the fixups. > > Instead of copying all of the data first, copy data only > after any needed fixups have been applied. > This patch needs a fixes tag. So this patch basically fixes the simple part of the info leak and patch 3 fixes the complicated part. Have I understood that correctly? > @@ -2956,7 +2984,11 @@ static void binder_transaction(struct binder_proc *proc, > } > ret = binder_translate_fd_array(fda, parent, t, thread, > in_reply_to); > - if (ret < 0) { > + if (ret < 0 || > + binder_alloc_copy_to_buffer(&target_proc->alloc, > + t->buffer, > + object_offset, > + fda, sizeof(*fda))) { > return_error = BR_FAILED_REPLY; > return_error_param = ret; "ret" is not a negative error code if binder_translate_fd_array() succeeds but binder_alloc_copy_to_buffer() fails. > return_error_line = __LINE__; > @@ -3028,6 +3060,19 @@ static void binder_transaction(struct binder_proc *proc, > goto err_bad_object_type; > } > } regards, dan carpenter _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel