blob: 962f54d6a23f62867279f601184d68369e42fe76 [file] [log] [blame]
// 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.
package {
// See: http://go/android-license-faq
// A large-scale-change added 'default_applicable_licenses' to import
// all of the 'license_kinds' from "frameworks_base_license"
// to get the below license kinds:
// SPDX-license-identifier-Apache-2.0
default_applicable_licenses: ["frameworks_base_license"],
}
cc_library_shared {
name: "libjnigraphics",
defaults: [
"bug_24465209_workaround",
],
cflags: [
"-Wall",
"-Werror",
"-Wunused",
"-Wunreachable-code",
],
srcs: [
"imagedecoder.cpp",
],
shared_libs: [
"libhwui",
"liblog",
],
header_libs: [
"jni_headers",
"native_headers",
"libhwui_internal_headers",
],
export_header_lib_headers: ["native_headers"],
static_libs: ["libarect"],
host_supported: true,
target: {
android: {
srcs: [
"aassetstreamadaptor.cpp",
"bitmap.cpp",
],
shared_libs: [
"libandroid",
],
version_script: "libjnigraphics.map.txt",
},
host: {
header_libs: [
"libnativewindow_headers",
],
},
},
stubs: {
symbol_file: "libjnigraphics.map.txt",
},
}
// The headers module is in frameworks/native/Android.bp.
ndk_library {
name: "libjnigraphics",
symbol_file: "libjnigraphics.map.txt",
first_version: "9",
unversioned_until: "current",
}
cc_defaults {
name: "imagedecoder_fuzzer_defaults",
srcs: ["fuzz/fuzz_imagedecoder.cpp"],
header_libs: ["jni_headers"],
shared_libs: [
"libbinder",
"libjnigraphics",
"libutils",
],
static_libs: ["libarect"],
fuzz_config: {
cc: [
"[email protected]",
"[email protected]",
],
asan_options: [
"detect_odr_violation=1",
],
hwasan_options: [
// Image decoders may attempt to allocate a large amount of memory
// (especially if the encoded image is large). This doesn't
// necessarily mean there is a bug. Set allocator_may_return_null=1
// for hwasan so the fuzzer can continue running.
"allocator_may_return_null = 1",
],
},
dictionary: "fuzz/imagedecoder_fuzzer.dict",
host_supported: true,
}
cc_fuzz {
name: "imagedecoder_fuzzer",
defaults: ["imagedecoder_fuzzer_defaults"],
corpus: ["fuzz/corpus/*"],
}
cc_fuzz {
name: "imagedecoder_png_fuzzer",
defaults: ["imagedecoder_fuzzer_defaults"],
shared_libs: [
"libz",
],
cflags: [
"-DPNG_MUTATOR_DEFINE_LIBFUZZER_CUSTOM_MUTATOR",
],
}
cc_fuzz {
name: "imagedecoder_heif_fuzzer",
defaults: ["imagedecoder_fuzzer_defaults"],
team: "trendy_team_android_core_graphics_stack",
shared_libs: [
"libfakeservicemanager",
],
target: {
android: {
shared_libs: [
"libmediaplayerservice",
"libmediaextractorservice",
],
},
host: {
static_libs: [
"libbinder_random_parcel",
"libcutils",
],
},
},
include_dirs: ["frameworks/av/services/mediaextractor"],
cflags: [
"-DFUZZ_HEIF_FORMAT",
],
}