Correctly handle dup() failure in Parcel::readNativeHandle

bail out if dup() fails, instead of creating an invalid native_handle_t

Bug: 28395952

Change-Id: Ia1a6198c0f45165b9c6a55a803e5f64d8afa0572
This commit is contained in:
Marco Nelissen 2016-04-26 08:44:09 -07:00 committed by The Android Automerger
parent 03a53d1c77
commit 54cb02ad73

View File

@ -1377,7 +1377,13 @@ native_handle* Parcel::readNativeHandle() const
for (int i=0 ; err==NO_ERROR && i<numFds ; i++) { for (int i=0 ; err==NO_ERROR && i<numFds ; i++) {
h->data[i] = dup(readFileDescriptor()); h->data[i] = dup(readFileDescriptor());
if (h->data[i] < 0) err = BAD_VALUE; if (h->data[i] < 0) {
for (int j = 0; j < i; j++) {
close(h->data[j]);
}
native_handle_delete(h);
return 0;
}
} }
err = read(h->data + numFds, sizeof(int)*numInts); err = read(h->data + numFds, sizeof(int)*numInts);
if (err != NO_ERROR) { if (err != NO_ERROR) {