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

Commit 12b806ba authored by Chia-I Wu's avatar Chia-I Wu
Browse files

graphics: add IMapper@2.1

Add necessary methods to protect the framework against crafted
buffer handles.

Bug: 62535446
Bug: 62084097
Bug: 32587089
Test: manual
Change-Id: I11486c0767a90788da9f84c2177202f26c0d9ce1
parent d7e247d6
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -10,4 +10,6 @@ subdirs = [
    "mapper/2.0",
    "mapper/2.0/default",
    "mapper/2.0/vts/functional",
    "mapper/2.1",
    "mapper/2.1/vts/functional",
]
+149 −0
Original line number Diff line number Diff line
// This file is autogenerated by hidl-gen. Do not edit manually.

filegroup {
    name: "android.hardware.graphics.mapper@2.1_hal",
    srcs: [
        "IMapper.hal",
    ],
}

genrule {
    name: "android.hardware.graphics.mapper@2.1_genc++",
    tools: ["hidl-gen"],
    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.1",
    srcs: [
        ":android.hardware.graphics.mapper@2.1_hal",
    ],
    out: [
        "android/hardware/graphics/mapper/2.1/MapperAll.cpp",
    ],
}

genrule {
    name: "android.hardware.graphics.mapper@2.1_genc++_headers",
    tools: ["hidl-gen"],
    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.1",
    srcs: [
        ":android.hardware.graphics.mapper@2.1_hal",
    ],
    out: [
        "android/hardware/graphics/mapper/2.1/IMapper.h",
        "android/hardware/graphics/mapper/2.1/IHwMapper.h",
        "android/hardware/graphics/mapper/2.1/BnHwMapper.h",
        "android/hardware/graphics/mapper/2.1/BpHwMapper.h",
        "android/hardware/graphics/mapper/2.1/BsMapper.h",
    ],
}

cc_library {
    name: "android.hardware.graphics.mapper@2.1",
    defaults: ["hidl-module-defaults"],
    generated_sources: ["android.hardware.graphics.mapper@2.1_genc++"],
    generated_headers: ["android.hardware.graphics.mapper@2.1_genc++_headers"],
    export_generated_headers: ["android.hardware.graphics.mapper@2.1_genc++_headers"],
    vendor_available: true,
    vndk: {
        enabled: true,
        support_system_process: true,
    },
    shared_libs: [
        "libhidlbase",
        "libhidltransport",
        "libhwbinder",
        "liblog",
        "libutils",
        "libcutils",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
    ],
    export_shared_lib_headers: [
        "libhidlbase",
        "libhidltransport",
        "libhwbinder",
        "libutils",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
    ],
}

genrule {
    name: "android.hardware.graphics.mapper@2.1-adapter-helper_genc++",
    tools: ["hidl-gen"],
    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-sources -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.1",
    srcs: [
        ":android.hardware.graphics.mapper@2.1_hal",
    ],
    out: [
        "android/hardware/graphics/mapper/2.1/AMapper.cpp",
    ],
}

genrule {
    name: "android.hardware.graphics.mapper@2.1-adapter-helper_genc++_headers",
    tools: ["hidl-gen"],
    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-headers -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.1",
    srcs: [
        ":android.hardware.graphics.mapper@2.1_hal",
    ],
    out: [
        "android/hardware/graphics/mapper/2.1/AMapper.h",
    ],
}


cc_library {
    name: "android.hardware.graphics.mapper@2.1-adapter-helper",
    defaults: ["hidl-module-defaults"],
    generated_sources: ["android.hardware.graphics.mapper@2.1-adapter-helper_genc++"],
    generated_headers: ["android.hardware.graphics.mapper@2.1-adapter-helper_genc++_headers"],
    export_generated_headers: ["android.hardware.graphics.mapper@2.1-adapter-helper_genc++_headers"],
    vendor_available: true,
    shared_libs: [
        "libhidlbase",
        "libhidltransport",
        "libhwbinder",
        "liblog",
        "libutils",
        "libcutils",
        "libhidladapter",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.1",
        "android.hardware.graphics.mapper@2.0-adapter-helper",
        "android.hidl.base@1.0-adapter-helper",
    ],
    export_shared_lib_headers: [
        "libhidlbase",
        "libhidltransport",
        "libhwbinder",
        "libutils",
        "libhidladapter",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.1",
        "android.hardware.graphics.mapper@2.0-adapter-helper",
        "android.hidl.base@1.0-adapter-helper",
    ],
}

genrule {
    name: "android.hardware.graphics.mapper@2.1-adapter_genc++",
    tools: ["hidl-gen"],
    cmd: "$(location hidl-gen) -o $(genDir) -Lc++-adapter-main -randroid.hardware:hardware/interfaces -randroid.hidl:system/libhidl/transport android.hardware.graphics.mapper@2.1",
    out: ["main.cpp"]
}

cc_test {
    name: "android.hardware.graphics.mapper@2.1-adapter",
    shared_libs: [
        "libhidladapter",
        "libhidlbase",
        "libhidltransport",
        "libutils",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.1",
        "android.hardware.graphics.mapper@2.1-adapter-helper",
    ],
    generated_sources: ["android.hardware.graphics.mapper@2.1-adapter_genc++"],
}
+61 −0
Original line number Diff line number Diff line
/*
 * Copyright 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.hardware.graphics.mapper@2.1;

import android.hardware.graphics.mapper@2.0::Error;
import android.hardware.graphics.mapper@2.0::IMapper;

interface IMapper extends android.hardware.graphics.mapper@2.0::IMapper {
    /**
     * Validate that the buffer can be safely accessed by a caller who assumes
     * the specified descriptorInfo and stride. This must at least validate
     * that the buffer size is large enough. Validating the buffer against
     * individual buffer attributes is optional.
     *
     * @param buffer is the buffer to validate against.
     * @param descriptorInfo specifies the attributes of the buffer.
     * @param stride is the buffer stride returned by IAllocator::allocate.
     * @return error is NONE upon success. Otherwise,
     *                  BAD_BUFFER when the buffer is invalid.
     *                  BAD_VALUE when buffer cannot be safely accessed
     */
    validateBufferSize(pointer buffer,
                       BufferDescriptorInfo descriptorInfo,
                       uint32_t stride)
            generates (Error error);

    /**
     * Get the transport size of a buffer. An imported buffer handle is a raw
     * buffer handle with the process-local runtime data appended. This
     * function, for example, allows a caller to omit the process-local
     * runtime data at the tail when serializing the imported buffer handle.
     *
     * Note that a client might or might not omit the process-local runtime
     * data when sending an imported buffer handle. The mapper must support
     * both cases on the receiving end.
     *
     * @param buffer is the buffer to get the transport size from.
     * @return error is NONE upon success. Otherwise,
     *                  BAD_BUFFER when the buffer is invalid.
     * @return numFds is the number of file descriptors needed for transport.
     * @return numInts is the number of integers needed for transport.
     */
    getTransportSize(pointer buffer)
            generates (Error error,
                       uint32_t numFds,
                       uint32_t numInts);
};
+6 −0
Original line number Diff line number Diff line
# Graphics team
olv@google.com

# VTS team
yim@google.com
zhuoyao@google.com
 No newline at end of file
+32 −0
Original line number Diff line number Diff line
//
// Copyright (C) 2016 The Android Open Source Project
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

cc_test {
    name: "VtsHalGraphicsMapperV2_1TargetTest",
    defaults: ["VtsHalTargetTestDefaults"],
    srcs: ["VtsHalGraphicsMapperV2_1TargetTest.cpp"],
    shared_libs: [
        "libsync",
    ],
    static_libs: [
        "android.hardware.graphics.allocator@2.0",
        "android.hardware.graphics.common@1.0",
        "android.hardware.graphics.mapper@2.0",
        "android.hardware.graphics.mapper@2.1",
        "libVtsHalGraphicsMapperTestUtils",
        "libnativehelper",
    ],
}
Loading