Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e6a88a81 authored by Avichal Rakesh's avatar Avichal Rakesh
Browse files

ExternalCameraHAL: Check for empty native handle instead of null.

AIDL cannot send nullptr when parceling NativeHandles. Instead, it
sends an empty  handle. Logic which previously relied on null
checks should now rely on checking if the native_handle is
empty or not.

This CL updates ExternalCameraUtils to check for empty handles
instead.

Bug: 299170474
Test: CameraAidlTest#processCaptureRequestInvalidBuffer passes
Change-Id: Id4ba928defaa061708a3c1cd68aa510b376f6cb3
parent cadd26db
Loading
Loading
Loading
Loading
+5 −2
Original line number Original line Diff line number Diff line
@@ -402,7 +402,10 @@ aidl::android::hardware::camera::common::Status importBufferImpl(
        buffer_handle_t buf,
        buffer_handle_t buf,
        /*out*/ buffer_handle_t** outBufPtr) {
        /*out*/ buffer_handle_t** outBufPtr) {
    using ::aidl::android::hardware::camera::common::Status;
    using ::aidl::android::hardware::camera::common::Status;
    if (buf == nullptr && bufId == BUFFER_ID_NO_BUFFER) {
    // AIDL does not have null NativeHandles. It sends empty handles instead.
    // We check for when the buf is empty instead of when buf is null.
    bool isBufEmpty = buf == nullptr || (buf->numFds == 0 && buf->numInts == 0);
    if (isBufEmpty && bufId == BUFFER_ID_NO_BUFFER) {
        ALOGE("%s: bufferId %" PRIu64 " has null buffer handle!", __FUNCTION__, bufId);
        ALOGE("%s: bufferId %" PRIu64 " has null buffer handle!", __FUNCTION__, bufId);
        return Status::ILLEGAL_ARGUMENT;
        return Status::ILLEGAL_ARGUMENT;
    }
    }