/*
 * Copyright 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 "frameworks_native_license"
    // to get the below license kinds:
    //   SPDX-license-identifier-Apache-2.0
    default_applicable_licenses: ["frameworks_native_license"],
    default_team: "trendy_team_android_core_graphics_stack",
}

cc_defaults {
    name: "surfaceflinger_fuzz_defaults",
    static_libs: [
        "libc++fs",
        "libsurfaceflinger_common",
    ],
    srcs: [
        ":libsurfaceflinger_sources",
    ],
    defaults: [
        "libsurfaceflinger_defaults",
    ],
    header_libs: [
        "libsurfaceflinger_headers",
    ],
    cflags: [
        "-Wno-unused-result",
        "-Wno-conversion",
        "-Wno-sign-compare",
        "-Wno-unused-function",
    ],
    fuzz_config: {
        cc: [
            "android-cogs-eng@google.com",
        ],
        componentid: 1075131,
        hotlists: [
            "4593311",
        ],
        description: "The fuzzer targets the APIs of libsurfaceflinger library",
        vector: "local_no_privileges_required",
        service_privilege: "privileged",
        users: "multi_user",
        fuzzed_code_usage: "shipped",
    },
}

cc_fuzz {
    name: "surfaceflinger_service_fuzzer",
    defaults: [
        "surfaceflinger_fuzz_defaults",
        "service_fuzzer_defaults",
        "fuzzer_disable_leaks",
    ],
    srcs: [
        "surfaceflinger_service_fuzzer.cpp",
    ],
    fuzz_config: {
        triage_assignee: "waghpawan@google.com",
    },
}
