/*
 * Copyright (C) 2021 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 {
    // See: http://go/android-license-faq
    // A large-scale-change added 'default_applicable_licenses' to import
    // all of the 'license_kinds' from "system_bt_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["system_bt_license"],
}

cc_fuzz {
    name: "btdevice_esco_fuzzer",
    defaults: ["fluoride_defaults"],
    srcs: [
        ":TestMockMainShimEntry",
        "btdevice_esco_fuzzer.cpp",
    ],
    header_libs: [
        "libbluetooth_headers",
    ],
    shared_libs: [
        "libdl",
        "liblog",
        "server_configurable_flags",
    ],
    generated_headers: [
        "BluetoothGeneratedDumpsysDataSchema_h",
    ],
    static_libs: [
        "bluetooth_flags_c_lib",
        "libbluetooth-types",
        "libbluetooth_gd",
        "libbluetooth_hci_pdl",
        "libbluetooth_log",
        "libbt_shim_bridge",
        "libbt_shim_ffi",
        "libbtcore",
        "libbtdevice",
        "libchrome",
        "libgmock",
        "libosi",
    ],
    include_dirs: [
        "packages/modules/Bluetooth/system",
        "packages/modules/Bluetooth/system/device/include",
        "packages/modules/Bluetooth/system/gd",
    ],
    cflags: [
        "-DBUILDCFG",
    ],
    fuzz_config: {
        cc: ["android-bluetooth-security@google.com"],
        componentid: 27441,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libbtdevice library",
        vector: "local_no_privileges_required",
        service_privilege: "privileged",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}
