// 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: [ "dichenzhang@google.com", "scroggo@google.com", ], 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", ], }