diff options
author | Adam Lesinski <adamlesinski@google.com> | 2015-05-12 17:35:48 -0700 |
---|---|---|
committer | Adam Lesinski <adamlesinski@google.com> | 2015-05-12 17:35:48 -0700 |
commit | eaac99a7172da52a76ba48c26413778a74951b1a (patch) | |
tree | dfd0468c8e3f74a0f8db671271d1aaac70d2f77f /libs/binder/Parcel.cpp | |
parent | be451b57b97c21747c637f4af06743318d42c36c (diff) | |
download | frameworks_native-eaac99a7172da52a76ba48c26413778a74951b1a.zip frameworks_native-eaac99a7172da52a76ba48c26413778a74951b1a.tar.gz frameworks_native-eaac99a7172da52a76ba48c26413778a74951b1a.tar.bz2 |
Verify that the native handle was created
The inputs to native_handle_create can cause an overflowed allocation,
so check the return value of native_handle_create before accessing
the memory it returns.
Bug:19334482
Change-Id: I1f489382776c2a1390793a79dc27ea17baa9b2a2
Diffstat (limited to 'libs/binder/Parcel.cpp')
-rw-r--r-- | libs/binder/Parcel.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 1b197a4..015866b 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -1347,6 +1347,10 @@ native_handle* Parcel::readNativeHandle() const if (err != NO_ERROR) return 0; native_handle* h = native_handle_create(numFds, numInts); + if (!h) { + return 0; + } + for (int i=0 ; err==NO_ERROR && i<numFds ; i++) { h->data[i] = dup(readFileDescriptor()); if (h->data[i] < 0) err = BAD_VALUE; |