// 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", cflags: [ "-Wall", "-Werror", "-Wunused", "-Wunreachable-code", ], srcs: [ "imagedecoder.cpp", ], shared_libs: [ "libhwui", "liblog", ], header_libs: [ "jni_headers", "libhwui_internal_headers", ], static_libs: ["libarect"], arch: { arm: { // TODO: This is to work around b/24465209. Remove after root cause is fixed pack_relocations: false, ldflags: ["-Wl,--hash-style=both"], }, }, host_supported: true, target: { android: { srcs: [ "aassetstreamadaptor.cpp", "bitmap.cpp", ], shared_libs: [ "libandroid", ], version_script: "libjnigraphics.map.txt", }, host: { header_libs: [ "libnativewindow_headers", ], }, }, } // 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: ["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", ], }, 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", ], }