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

Commit d65b6a25 authored by Wonsik Kim's avatar Wonsik Kim Committed by Gerrit Code Review
Browse files

Merge changes from topics "c2aidl-service", "c2fuzzer" into main

* changes:
  codec2 hal: fuzzer
  codec2 hal: example AIDL service
parents 92e4b803 dfe47c1c
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -150,3 +150,28 @@ cc_defaults {
        "libcodec2_aidl_client",
    ],
}

cc_fuzz {
    name: "libcodec2-aidl-fuzzer",
    vendor: true,
    srcs: [
        "fuzzer.cpp",
    ],
    defaults: [
        "libcodec2-aidl-defaults",
        "service_fuzzer_defaults",
    ],
    shared_libs: [
        "libcodec2_vndk",

        "libcodec2_soft_avcdec",
        "libcodec2_soft_avcenc",
        "libcodec2_soft_aacdec",
        "libcodec2_soft_aacenc",
    ],
    fuzz_config: {
        cc: [
            "wonsik@google.com",
        ],
    },
}
+35 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 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.
 */
#include <fuzzbinder/libbinder_ndk_driver.h>
#include <fuzzer/FuzzedDataProvider.h>

#include <C2PlatformSupport.h>

#include <android/binder_interface_utils.h>
#include <codec2/aidl/ComponentStore.h>

using aidl::android::hardware::media::c2::utils::ComponentStore;
using android::fuzzService;
using ndk::SharedRefBase;

extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    std::shared_ptr<C2ComponentStore> store = ::android::GetCodec2PlatformComponentStore();
    std::shared_ptr<ComponentStore> binder = SharedRefBase::make<ComponentStore>(store);

    fuzzService(binder->asBinder().get(), FuzzedDataProvider(data, size));

    return 0;
}
+17 −13
Original line number Diff line number Diff line
@@ -39,13 +39,17 @@ package {
}

cc_binary {
    name: "android.hardware.media.c2@1.2-default-service",
    name: "android.hardware.media.c2-default-service",
    vendor: true,
    relative_install_path: "hw",

    init_rc: ["android.hardware.media.c2@1.2-default-service.rc"],
    init_rc: ["android.hardware.media.c2-default-service.rc"],

    defaults: [
        "libcodec2-hidl-defaults",
        "libcodec2-aidl-defaults",
    ],

    defaults: ["libcodec2-hidl-defaults"],
    srcs: [
        "vendor.cpp",
    ],
@@ -54,13 +58,14 @@ cc_binary {
    shared_libs: [
        "libavservices_minijail",
        "libbinder",
        "libbinder_ndk",
    ],
    required: ["android.hardware.media.c2@1.2-default-seccomp_policy"],
    required: ["android.hardware.media.c2-default-seccomp_policy"],

    // The content in manifest_media_c2_V1_1_default.xml can be included
    // The content in manifest_media_c2_default.xml can be included
    // directly in the main device manifest.xml file or via vintf_fragments.
    // (Remove the line below if the entry is already in the main manifest.)
    vintf_fragments: ["manifest_media_c2_V1_1_default.xml"],
    vintf_fragments: ["manifest_media_c2_default.xml"],

    // Remove this line to enable this module.
    enabled: false,
@@ -73,30 +78,29 @@ cc_binary {
// Files in the "seccomp_policy" subdirectory are only provided as examples.
// They may not work on some devices and/or architectures without modification.
prebuilt_etc {
    name: "android.hardware.media.c2@1.2-default-seccomp_policy",
    name: "android.hardware.media.c2-default-seccomp_policy",
    vendor: true,
    sub_dir: "seccomp_policy",

    // If a specific architecture is targeted, multiple choices are not needed.
    arch: {
        arm: {
            src: "seccomp_policy/android.hardware.media.c2@1.2-default-arm.policy",
            src: "seccomp_policy/android.hardware.media.c2-default-arm.policy",
        },
        arm64: {
            src: "seccomp_policy/android.hardware.media.c2@1.2-default-arm64.policy",
            src: "seccomp_policy/android.hardware.media.c2-default-arm64.policy",
        },
        riscv64: {
            src: "seccomp_policy/android.hardware.media.c2@1.2-default-riscv64.policy",
            src: "seccomp_policy/android.hardware.media.c2-default-riscv64.policy",
        },
        x86: {
            src: "seccomp_policy/android.hardware.media.c2@1.2-default-x86.policy",
            src: "seccomp_policy/android.hardware.media.c2-default-x86.policy",
        },
        x86_64: {
            src: "seccomp_policy/android.hardware.media.c2@1.2-default-x86_64.policy",
            src: "seccomp_policy/android.hardware.media.c2-default-x86_64.policy",
        },
    },

    // This may be removed.
    required: ["crash_dump.policy"],
}
+1 −1
Original line number Diff line number Diff line
service android-hardware-media-c2-hal-1-2 /vendor/bin/hw/android.hardware.media.c2@1.2-default-service
service android-hardware-media-c2-hal /vendor/bin/hw/android.hardware.media.c2-default-service
    class hal
    user mediacodec
    group camera mediadrm drmrpc
+0 −11
Original line number Diff line number Diff line
<manifest version="1.0" type="device">
    <hal>
        <name>android.hardware.media.c2</name>
        <transport>hwbinder</transport>
        <version>1.0</version>
        <interface>
            <name>IComponentStore</name>
            <instance>default</instance>
        </interface>
    </hal>
</manifest>
Loading