1# Copyright (C) 2024 Huawei Device Co., Ltd.
2# Licensed under the Apache License, Version 2.0 (the "License");
3# you may not use this file except in compliance with the License.
4# You may obtain a copy of the License at
5#
6#     http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS,
10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11# See the License for the specific language governing permissions and
12# limitations under the License.
13
14#####################hydra-fuzz###################
15import("//build/config/features.gni")
16import("//build/test.gni")
17import("//foundation/communication/dhcp/dhcp.gni")
18
19##############################fuzztest##########################################
20ohos_fuzztest("DhcpClientFunFuzzTest") {
21  module_out_path = dhcp_fuzz_output_path
22  fuzz_config_file = "$DHCP_ROOT_DIR/test/fuzztest/dhcpclientfun_fuzzer"
23
24  include_dirs = [
25    "$DHCP_ROOT_DIR/frameworks/native/include",
26    "$DHCP_ROOT_DIR/frameworks/native/interfaces",
27    "$DHCP_ROOT_DIR/frameworks/native/src",
28    "$DHCP_ROOT_DIR/frameworks/native/c_adapter/inc",
29    "$DHCP_ROOT_DIR/interfaces",
30    "$DHCP_ROOT_DIR/interfaces/inner_api",
31    "$DHCP_ROOT_DIR/interfaces/inner_api/include",
32    "$DHCP_ROOT_DIR/interfaces/kits/c",
33    "$DHCP_ROOT_DIR/services",
34    "$DHCP_ROOT_DIR/services/dhcp_client/include",
35    "$DHCP_ROOT_DIR/test/fuzztest/fuzz_common_func",
36  ]
37  cflags = [
38    "-g",
39    "-O0",
40    "-Wno-unused-variable",
41    "-fno-omit-frame-pointer",
42  ]
43  sources = [
44    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_callback_proxy.cpp",
45    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_death_recipient.cpp",
46    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_service_impl.cpp",
47    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_state_machine.cpp",
48    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_client_stub.cpp",
49    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_function.cpp",
50    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_client.cpp",
51    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_ipv6_event.cpp",
52    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_options.cpp",
53    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result.cpp",
54    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_result_store_manager.cpp",
55    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_socket.cpp",
56    "$DHCP_ROOT_DIR/services/dhcp_client/src/dhcp_thread.cpp",
57    "$DHCP_ROOT_DIR/services/utils/src/dhcp_arp_checker.cpp",
58    "dhcpclientfun_fuzzer.cpp",
59  ]
60  deps = [ "$DHCP_ROOT_DIR/services/utils:dhcp_utils" ]
61  external_deps = [
62    "ability_runtime:wantagent_innerkits",
63    "access_token:libaccesstoken_sdk",
64    "access_token:libtokenid_sdk",
65    "c_utils:utils",
66    "hilog:libhilog",
67    "ipc:ipc_single",
68    "netmanager_base:net_native_manager_if",
69    "netmanager_base:netsys_controller",
70    "safwk:system_ability_fwk",
71    "samgr:samgr_proxy",
72    "time_service:time_client",
73  ]
74  defines = [
75    "DTFUZZ_TEST",
76    "private = public",
77    "protected = public",
78    "VENDOR_NAME_PREFIX=\"$VENDOR_NAME\"",
79    "DEFAULT_IPV4_DNS_PRI=\"$IPV4_DNS_PRI\"",
80    "DEFAULT_IPV4_DNS_SEC=\"$IPV4_DNS_SEC\"",
81  ]
82  part_name = "dhcp"
83  subsystem_name = "communication"
84}
85