Use new read(Embedded)Buffer/readNativeHandle APIs.
hidl_memory may have a null native_handle.
MQDescriptor may not.
Bug: 34134129
Test: hidl_test
Change-Id: I824760d59984a7c3e00309010760e33e4c289ef0
diff --git a/transport/HidlBinderSupport.cpp b/transport/HidlBinderSupport.cpp
index 38e0640..6be7254 100644
--- a/transport/HidlBinderSupport.cpp
+++ b/transport/HidlBinderSupport.cpp
@@ -30,22 +30,20 @@
status_t readEmbeddedFromParcel(hidl_memory * /* memory */,
const Parcel &parcel, size_t parentHandle, size_t parentOffset) {
- ::android::status_t _hidl_err = ::android::OK;
- const native_handle_t *_hidl_memory_handle = parcel.readEmbeddedNativeHandle(
+ const native_handle_t *handle;
+ ::android::status_t _hidl_err = parcel.readNullableEmbeddedNativeHandle(
parentHandle,
- parentOffset + hidl_memory::kOffsetOfHandle);
+ parentOffset + hidl_memory::kOffsetOfHandle,
+ &handle);
- if (_hidl_memory_handle == nullptr) {
- _hidl_err = ::android::UNKNOWN_ERROR;
- return _hidl_err;
+ if (_hidl_err == ::android::OK) {
+ _hidl_err = readEmbeddedFromParcel(
+ (hidl_string*) nullptr,
+ parcel,
+ parentHandle,
+ parentOffset + hidl_memory::kOffsetOfName);
}
- _hidl_err = readEmbeddedFromParcel(
- (hidl_string*) nullptr,
- parcel,
- parentHandle,
- parentOffset + hidl_memory::kOffsetOfName);
-
return _hidl_err;
}
@@ -71,12 +69,12 @@
status_t readEmbeddedFromParcel(hidl_string * /* string */,
const Parcel &parcel, size_t parentHandle, size_t parentOffset) {
- const void *ptr = parcel.readEmbeddedBuffer(
+ const void *out;
+ return parcel.readEmbeddedBuffer(
nullptr /* buffer_handle */,
parentHandle,
- parentOffset + hidl_string::kOffsetOfBuffer);
-
- return ptr != NULL ? OK : UNKNOWN_ERROR;
+ parentOffset + hidl_string::kOffsetOfBuffer,
+ &out);
}
status_t writeEmbeddedToParcel(const hidl_string &string,
diff --git a/transport/include/hidl/HidlBinderSupport.h b/transport/include/hidl/HidlBinderSupport.h
index 1ff925c..d0ad3fb 100644
--- a/transport/include/hidl/HidlBinderSupport.h
+++ b/transport/include/hidl/HidlBinderSupport.h
@@ -95,12 +95,12 @@
size_t parentHandle,
size_t parentOffset,
size_t *handle) {
- const void *ptr = parcel.readEmbeddedBuffer(
+ const void *out;
+ return parcel.readEmbeddedBuffer(
handle,
parentHandle,
- parentOffset + hidl_vec<T>::kOffsetOfBuffer);
-
- return ptr != NULL ? OK : UNKNOWN_ERROR;
+ parentOffset + hidl_vec<T>::kOffsetOfBuffer,
+ &out);
}
template<typename T>
@@ -144,14 +144,13 @@
if (_hidl_err != ::android::OK) { return _hidl_err; }
- const native_handle_t *_hidl_mq_handle_ptr = parcel.readEmbeddedNativeHandle(
+ const native_handle_t *_hidl_mq_handle_ptr;
+ _hidl_err = parcel.readEmbeddedNativeHandle(
parentHandle,
- parentOffset + MQDescriptor<T, flavor>::kOffsetOfHandle);
+ parentOffset + MQDescriptor<T, flavor>::kOffsetOfHandle,
+ &_hidl_mq_handle_ptr);
- if (_hidl_mq_handle_ptr == nullptr) {
- _hidl_err = ::android::UNKNOWN_ERROR;
- return _hidl_err;
- }
+ if (_hidl_err != ::android::OK) { return _hidl_err; }
return _hidl_err;
}