diff options
| author | 2014-02-18 21:10:29 -0800 | |
|---|---|---|
| committer | 2014-02-18 21:14:41 -0800 | |
| commit | 07fd0f195db6d341cab4e54257f508d802c98832 (patch) | |
| tree | 452ae075c4dc93a9a2d99d316d627bb4171ab2cf /libs/binder/Parcel.cpp | |
| parent | 87b30d0447829167b2d83f4f61f702638d937524 (diff) | |
Binder: Fix some valgrind errors.
When using 64 bit binder pointers, only initializing the 32 bit
handle, in a stack allocated struct, will pass uninitialized stack
data to the kernel and other processes.
Change-Id: I3432d9d36bb251d8ddb0a863661aeb80aabb3d92
Diffstat (limited to 'libs/binder/Parcel.cpp')
| -rw-r--r-- | libs/binder/Parcel.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 03bcf01e52..9f56def83d 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -164,6 +164,7 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_HANDLE; + obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { @@ -197,6 +198,7 @@ status_t flatten_binder(const sp<ProcessState>& /*proc*/, } const int32_t handle = proxy ? proxy->handle() : 0; obj.type = BINDER_TYPE_WEAK_HANDLE; + obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = handle; obj.cookie = 0; } else { @@ -748,6 +750,7 @@ status_t Parcel::writeFileDescriptor(int fd, bool takeOwnership) flat_binder_object obj; obj.type = BINDER_TYPE_FD; obj.flags = 0x7f | FLAT_BINDER_FLAG_ACCEPTS_FDS; + obj.binder = 0; /* Don't pass uninitialized stack data to a remote process */ obj.handle = fd; obj.cookie = takeOwnership ? 1 : 0; return writeObject(obj, true); |