1*d57664e9SAndroid Build Coastguard Worker// Copyright (C) 2016 The Android Open Source Project 2*d57664e9SAndroid Build Coastguard Worker// 3*d57664e9SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d57664e9SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d57664e9SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d57664e9SAndroid Build Coastguard Worker// 7*d57664e9SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d57664e9SAndroid Build Coastguard Worker// 9*d57664e9SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d57664e9SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d57664e9SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d57664e9SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d57664e9SAndroid Build Coastguard Worker// limitations under the License. 14*d57664e9SAndroid Build Coastguard Worker 15*d57664e9SAndroid Build Coastguard Workerpackage { 16*d57664e9SAndroid Build Coastguard Worker // See: http://go/android-license-faq 17*d57664e9SAndroid Build Coastguard Worker // A large-scale-change added 'default_applicable_licenses' to import 18*d57664e9SAndroid Build Coastguard Worker // all of the 'license_kinds' from "frameworks_base_license" 19*d57664e9SAndroid Build Coastguard Worker // to get the below license kinds: 20*d57664e9SAndroid Build Coastguard Worker // SPDX-license-identifier-Apache-2.0 21*d57664e9SAndroid Build Coastguard Worker default_applicable_licenses: ["frameworks_base_license"], 22*d57664e9SAndroid Build Coastguard Worker} 23*d57664e9SAndroid Build Coastguard Worker 24*d57664e9SAndroid Build Coastguard Workercc_library_shared { 25*d57664e9SAndroid Build Coastguard Worker name: "libjnigraphics", 26*d57664e9SAndroid Build Coastguard Worker defaults: [ 27*d57664e9SAndroid Build Coastguard Worker "bug_24465209_workaround", 28*d57664e9SAndroid Build Coastguard Worker ], 29*d57664e9SAndroid Build Coastguard Worker 30*d57664e9SAndroid Build Coastguard Worker cflags: [ 31*d57664e9SAndroid Build Coastguard Worker "-Wall", 32*d57664e9SAndroid Build Coastguard Worker "-Werror", 33*d57664e9SAndroid Build Coastguard Worker "-Wunused", 34*d57664e9SAndroid Build Coastguard Worker "-Wunreachable-code", 35*d57664e9SAndroid Build Coastguard Worker ], 36*d57664e9SAndroid Build Coastguard Worker 37*d57664e9SAndroid Build Coastguard Worker srcs: [ 38*d57664e9SAndroid Build Coastguard Worker "imagedecoder.cpp", 39*d57664e9SAndroid Build Coastguard Worker ], 40*d57664e9SAndroid Build Coastguard Worker 41*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 42*d57664e9SAndroid Build Coastguard Worker "libhwui", 43*d57664e9SAndroid Build Coastguard Worker "liblog", 44*d57664e9SAndroid Build Coastguard Worker ], 45*d57664e9SAndroid Build Coastguard Worker 46*d57664e9SAndroid Build Coastguard Worker header_libs: [ 47*d57664e9SAndroid Build Coastguard Worker "jni_headers", 48*d57664e9SAndroid Build Coastguard Worker "native_headers", 49*d57664e9SAndroid Build Coastguard Worker "libhwui_internal_headers", 50*d57664e9SAndroid Build Coastguard Worker ], 51*d57664e9SAndroid Build Coastguard Worker export_header_lib_headers: ["native_headers"], 52*d57664e9SAndroid Build Coastguard Worker 53*d57664e9SAndroid Build Coastguard Worker static_libs: [ 54*d57664e9SAndroid Build Coastguard Worker "libarect", 55*d57664e9SAndroid Build Coastguard Worker ], 56*d57664e9SAndroid Build Coastguard Worker 57*d57664e9SAndroid Build Coastguard Worker host_supported: true, 58*d57664e9SAndroid Build Coastguard Worker target: { 59*d57664e9SAndroid Build Coastguard Worker android: { 60*d57664e9SAndroid Build Coastguard Worker srcs: [ 61*d57664e9SAndroid Build Coastguard Worker "aassetstreamadaptor.cpp", 62*d57664e9SAndroid Build Coastguard Worker "bitmap.cpp", 63*d57664e9SAndroid Build Coastguard Worker ], 64*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 65*d57664e9SAndroid Build Coastguard Worker "libandroid", 66*d57664e9SAndroid Build Coastguard Worker ], 67*d57664e9SAndroid Build Coastguard Worker static_libs: [ 68*d57664e9SAndroid Build Coastguard Worker "libstatslog_hwui", 69*d57664e9SAndroid Build Coastguard Worker "libstatspull_lazy", 70*d57664e9SAndroid Build Coastguard Worker "libstatssocket_lazy", 71*d57664e9SAndroid Build Coastguard Worker ], 72*d57664e9SAndroid Build Coastguard Worker version_script: "libjnigraphics.map.txt", 73*d57664e9SAndroid Build Coastguard Worker }, 74*d57664e9SAndroid Build Coastguard Worker host: { 75*d57664e9SAndroid Build Coastguard Worker header_libs: [ 76*d57664e9SAndroid Build Coastguard Worker "libnativewindow_headers", 77*d57664e9SAndroid Build Coastguard Worker ], 78*d57664e9SAndroid Build Coastguard Worker }, 79*d57664e9SAndroid Build Coastguard Worker }, 80*d57664e9SAndroid Build Coastguard Worker stubs: { 81*d57664e9SAndroid Build Coastguard Worker symbol_file: "libjnigraphics.map.txt", 82*d57664e9SAndroid Build Coastguard Worker }, 83*d57664e9SAndroid Build Coastguard Worker} 84*d57664e9SAndroid Build Coastguard Worker 85*d57664e9SAndroid Build Coastguard Worker// The headers module is in frameworks/native/Android.bp. 86*d57664e9SAndroid Build Coastguard Workerndk_library { 87*d57664e9SAndroid Build Coastguard Worker name: "libjnigraphics", 88*d57664e9SAndroid Build Coastguard Worker symbol_file: "libjnigraphics.map.txt", 89*d57664e9SAndroid Build Coastguard Worker first_version: "9", 90*d57664e9SAndroid Build Coastguard Worker unversioned_until: "current", 91*d57664e9SAndroid Build Coastguard Worker} 92*d57664e9SAndroid Build Coastguard Worker 93*d57664e9SAndroid Build Coastguard Workercc_defaults { 94*d57664e9SAndroid Build Coastguard Worker name: "imagedecoder_fuzzer_defaults", 95*d57664e9SAndroid Build Coastguard Worker srcs: ["fuzz/fuzz_imagedecoder.cpp"], 96*d57664e9SAndroid Build Coastguard Worker header_libs: ["jni_headers"], 97*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 98*d57664e9SAndroid Build Coastguard Worker "libbinder", 99*d57664e9SAndroid Build Coastguard Worker "libjnigraphics", 100*d57664e9SAndroid Build Coastguard Worker "libutils", 101*d57664e9SAndroid Build Coastguard Worker ], 102*d57664e9SAndroid Build Coastguard Worker static_libs: ["libarect"], 103*d57664e9SAndroid Build Coastguard Worker fuzz_config: { 104*d57664e9SAndroid Build Coastguard Worker cc: [ 105*d57664e9SAndroid Build Coastguard Worker "[email protected]", 106*d57664e9SAndroid Build Coastguard Worker "[email protected]", 107*d57664e9SAndroid Build Coastguard Worker ], 108*d57664e9SAndroid Build Coastguard Worker asan_options: [ 109*d57664e9SAndroid Build Coastguard Worker "detect_odr_violation=1", 110*d57664e9SAndroid Build Coastguard Worker ], 111*d57664e9SAndroid Build Coastguard Worker hwasan_options: [ 112*d57664e9SAndroid Build Coastguard Worker // Image decoders may attempt to allocate a large amount of memory 113*d57664e9SAndroid Build Coastguard Worker // (especially if the encoded image is large). This doesn't 114*d57664e9SAndroid Build Coastguard Worker // necessarily mean there is a bug. Set allocator_may_return_null=1 115*d57664e9SAndroid Build Coastguard Worker // for hwasan so the fuzzer can continue running. 116*d57664e9SAndroid Build Coastguard Worker "allocator_may_return_null = 1", 117*d57664e9SAndroid Build Coastguard Worker ], 118*d57664e9SAndroid Build Coastguard Worker }, 119*d57664e9SAndroid Build Coastguard Worker dictionary: "fuzz/imagedecoder_fuzzer.dict", 120*d57664e9SAndroid Build Coastguard Worker host_supported: true, 121*d57664e9SAndroid Build Coastguard Worker} 122*d57664e9SAndroid Build Coastguard Worker 123*d57664e9SAndroid Build Coastguard Workercc_fuzz { 124*d57664e9SAndroid Build Coastguard Worker name: "imagedecoder_fuzzer", 125*d57664e9SAndroid Build Coastguard Worker defaults: ["imagedecoder_fuzzer_defaults"], 126*d57664e9SAndroid Build Coastguard Worker corpus: ["fuzz/corpus/*"], 127*d57664e9SAndroid Build Coastguard Worker} 128*d57664e9SAndroid Build Coastguard Worker 129*d57664e9SAndroid Build Coastguard Workercc_fuzz { 130*d57664e9SAndroid Build Coastguard Worker name: "imagedecoder_png_fuzzer", 131*d57664e9SAndroid Build Coastguard Worker defaults: ["imagedecoder_fuzzer_defaults"], 132*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 133*d57664e9SAndroid Build Coastguard Worker "libz", 134*d57664e9SAndroid Build Coastguard Worker ], 135*d57664e9SAndroid Build Coastguard Worker cflags: [ 136*d57664e9SAndroid Build Coastguard Worker "-DPNG_MUTATOR_DEFINE_LIBFUZZER_CUSTOM_MUTATOR", 137*d57664e9SAndroid Build Coastguard Worker ], 138*d57664e9SAndroid Build Coastguard Worker} 139*d57664e9SAndroid Build Coastguard Worker 140*d57664e9SAndroid Build Coastguard Workercc_fuzz { 141*d57664e9SAndroid Build Coastguard Worker name: "imagedecoder_heif_fuzzer", 142*d57664e9SAndroid Build Coastguard Worker defaults: ["imagedecoder_fuzzer_defaults"], 143*d57664e9SAndroid Build Coastguard Worker team: "trendy_team_android_core_graphics_stack", 144*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 145*d57664e9SAndroid Build Coastguard Worker "libfakeservicemanager", 146*d57664e9SAndroid Build Coastguard Worker ], 147*d57664e9SAndroid Build Coastguard Worker target: { 148*d57664e9SAndroid Build Coastguard Worker android: { 149*d57664e9SAndroid Build Coastguard Worker shared_libs: [ 150*d57664e9SAndroid Build Coastguard Worker "libmediaplayerservice", 151*d57664e9SAndroid Build Coastguard Worker "libmediaextractorservice", 152*d57664e9SAndroid Build Coastguard Worker ], 153*d57664e9SAndroid Build Coastguard Worker }, 154*d57664e9SAndroid Build Coastguard Worker host: { 155*d57664e9SAndroid Build Coastguard Worker static_libs: [ 156*d57664e9SAndroid Build Coastguard Worker "libbinder_random_parcel", 157*d57664e9SAndroid Build Coastguard Worker "libcutils", 158*d57664e9SAndroid Build Coastguard Worker ], 159*d57664e9SAndroid Build Coastguard Worker }, 160*d57664e9SAndroid Build Coastguard Worker }, 161*d57664e9SAndroid Build Coastguard Worker include_dirs: ["frameworks/av/services/mediaextractor"], 162*d57664e9SAndroid Build Coastguard Worker cflags: [ 163*d57664e9SAndroid Build Coastguard Worker "-DFUZZ_HEIF_FORMAT", 164*d57664e9SAndroid Build Coastguard Worker ], 165*d57664e9SAndroid Build Coastguard Worker} 166