• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 
16 #include <iostream>
17 #include <cstddef>
18 #include <cstdint>
19 #include <atomic>
20 #include <thread>
21 #include "audio_info.h"
22 #include "audio_policy_server.h"
23 #include "audio_policy_proxy.h"
24 #include "audio_policy_stub.h"
25 #include "audio_device_info.h"
26 #include "iaudio_policy_client.h"
27 #include "message_parcel.h"
28 #include "accesstoken_kit.h"
29 #include "audio_routing_manager.h"
30 #include "audio_stream_manager.h"
31 #include "nativetoken_kit.h"
32 #include "token_setproc.h"
33 #include "access_token.h"
34 #include "iaudio_policy.h"
35 #include "../fuzz_utils.h"
36 using namespace std;
37 
38 namespace OHOS {
39 namespace AudioStandard {
40 
41 FuzzUtils &g_fuzzUtils = FuzzUtils::GetInstance();
42 const size_t FUZZ_INPUT_SIZE_THRESHOLD = 10;
43 const int32_t SYSTEM_ABILITY_ID = 3009;
44 const bool RUN_ON_CREATE = false;
45 bool g_hasServerInit = false;
46 
47 typedef void (*TestFuncs)();
48 
GetServerPtr()49 sptr<AudioPolicyServer> GetServerPtr()
50 {
51     static sptr<AudioPolicyServer> server = sptr<AudioPolicyServer>::MakeSptr(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
52     if (!g_hasServerInit && server != nullptr) {
53         server->OnStart();
54         server->OnAddSystemAbility(AUDIO_DISTRIBUTED_SERVICE_ID, "");
55 #ifdef FEATURE_MULTIMODALINPUT_INPUT
56         server->OnAddSystemAbility(MULTIMODAL_INPUT_SERVICE_ID, "");
57 #endif
58         server->OnAddSystemAbility(BLUETOOTH_HOST_SYS_ABILITY_ID, "");
59         server->OnAddSystemAbility(POWER_MANAGER_SERVICE_ID, "");
60         server->OnAddSystemAbility(SUBSYS_ACCOUNT_SYS_ABILITY_ID_BEGIN, "");
61         server->audioPolicyService_.SetDefaultDeviceLoadFlag(true);
62         g_hasServerInit = true;
63     }
64     return server;
65 }
66 
67 const vector<DeviceType> g_testDeviceTypes = {
68     DEVICE_TYPE_NONE,
69     DEVICE_TYPE_INVALID,
70     DEVICE_TYPE_EARPIECE,
71     DEVICE_TYPE_SPEAKER,
72     DEVICE_TYPE_WIRED_HEADSET,
73     DEVICE_TYPE_WIRED_HEADPHONES,
74     DEVICE_TYPE_BLUETOOTH_SCO,
75     DEVICE_TYPE_BLUETOOTH_A2DP,
76     DEVICE_TYPE_BLUETOOTH_A2DP_IN,
77     DEVICE_TYPE_MIC,
78     DEVICE_TYPE_WAKEUP,
79     DEVICE_TYPE_USB_HEADSET,
80     DEVICE_TYPE_DP,
81     DEVICE_TYPE_REMOTE_CAST,
82     DEVICE_TYPE_USB_DEVICE,
83     DEVICE_TYPE_ACCESSORY,
84     DEVICE_TYPE_REMOTE_DAUDIO,
85     DEVICE_TYPE_HDMI,
86     DEVICE_TYPE_LINE_DIGITAL,
87     DEVICE_TYPE_NEARLINK,
88     DEVICE_TYPE_NEARLINK_IN,
89     DEVICE_TYPE_FILE_SINK,
90     DEVICE_TYPE_FILE_SOURCE,
91     DEVICE_TYPE_EXTERN_CABLE,
92     DEVICE_TYPE_DEFAULT,
93     DEVICE_TYPE_USB_ARM_HEADSET,
94     DEVICE_TYPE_MAX,
95 };
96 
97 vector<IAudioPolicyIpcCode> IAudioPolicyIpcCodeVec = {
98     IAudioPolicyIpcCode::COMMAND_GET_MAX_VOLUME_LEVEL,
99     IAudioPolicyIpcCode::COMMAND_GET_MIN_VOLUME_LEVEL,
100     IAudioPolicyIpcCode::COMMAND_SET_SYSTEM_VOLUME_LEVEL_LEGACY,
101     IAudioPolicyIpcCode::COMMAND_SET_SYSTEM_VOLUME_LEVEL,
102     IAudioPolicyIpcCode::COMMAND_SET_APP_VOLUME_LEVEL,
103     IAudioPolicyIpcCode::COMMAND_SET_APP_VOLUME_MUTED,
104     IAudioPolicyIpcCode::COMMAND_SET_ADJUST_VOLUME_FOR_ZONE,
105     IAudioPolicyIpcCode::COMMAND_IS_APP_VOLUME_MUTE,
106     IAudioPolicyIpcCode::COMMAND_SET_SELF_APP_VOLUME_LEVEL,
107     IAudioPolicyIpcCode::COMMAND_SET_SYSTEM_VOLUME_LEVEL_WITH_DEVICE,
108     IAudioPolicyIpcCode::COMMAND_GET_SYSTEM_VOLUME_LEVEL,
109     IAudioPolicyIpcCode::COMMAND_GET_APP_VOLUME_LEVEL,
110     IAudioPolicyIpcCode::COMMAND_GET_SELF_APP_VOLUME_LEVEL,
111     IAudioPolicyIpcCode::COMMAND_SET_STREAM_MUTE_LEGACY,
112     IAudioPolicyIpcCode::COMMAND_SET_STREAM_MUTE,
113     IAudioPolicyIpcCode::COMMAND_GET_STREAM_MUTE,
114     IAudioPolicyIpcCode::COMMAND_IS_STREAM_ACTIVE,
115     IAudioPolicyIpcCode::COMMAND_IS_STREAM_ACTIVE_BY_STREAM_USAGE,
116     IAudioPolicyIpcCode::COMMAND_SET_DEVICE_ACTIVE,
117     IAudioPolicyIpcCode::COMMAND_IS_DEVICE_ACTIVE,
118     IAudioPolicyIpcCode::COMMAND_GET_ACTIVE_OUTPUT_DEVICE,
119     IAudioPolicyIpcCode::COMMAND_GET_ACTIVE_INPUT_DEVICE,
120     IAudioPolicyIpcCode::COMMAND_SET_RINGER_MODE_LEGACY,
121     IAudioPolicyIpcCode::COMMAND_SET_RINGER_MODE,
122     IAudioPolicyIpcCode::COMMAND_GET_RINGER_MODE,
123     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_SCENE,
124     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_SCENE,
125     IAudioPolicyIpcCode::COMMAND_SET_MICROPHONE_MUTE,
126     IAudioPolicyIpcCode::COMMAND_SET_MICROPHONE_MUTE_AUDIO_CONFIG,
127     IAudioPolicyIpcCode::COMMAND_IS_MICROPHONE_MUTE_LEGACY,
128     IAudioPolicyIpcCode::COMMAND_IS_MICROPHONE_MUTE,
129     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_INTERRUPT_CALLBACK,
130     IAudioPolicyIpcCode::COMMAND_UNSET_AUDIO_INTERRUPT_CALLBACK,
131     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_ROUTE_CALLBACK,
132     IAudioPolicyIpcCode::COMMAND_UNSET_AUDIO_ROUTE_CALLBACK,
133     IAudioPolicyIpcCode::COMMAND_SET_QUERY_CLIENT_TYPE_CALLBACK,
134     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_CLIENT_INFO_MGR_CALLBACK,
135     IAudioPolicyIpcCode::COMMAND_SET_QUERY_BUNDLE_NAME_LIST_CALLBACK,
136     IAudioPolicyIpcCode::COMMAND_ACTIVATE_AUDIO_INTERRUPT,
137     IAudioPolicyIpcCode::COMMAND_DEACTIVATE_AUDIO_INTERRUPT,
138     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_MANAGER_INTERRUPT_CALLBACK,
139     IAudioPolicyIpcCode::COMMAND_UNSET_AUDIO_MANAGER_INTERRUPT_CALLBACK,
140     IAudioPolicyIpcCode::COMMAND_REQUEST_AUDIO_FOCUS,
141     IAudioPolicyIpcCode::COMMAND_ABANDON_AUDIO_FOCUS,
142     IAudioPolicyIpcCode::COMMAND_GET_STREAM_IN_FOCUS,
143     IAudioPolicyIpcCode::COMMAND_GET_SESSION_INFO_IN_FOCUS,
144     IAudioPolicyIpcCode::COMMAND_GET_DEVICES,
145     IAudioPolicyIpcCode::COMMAND_SELECT_OUTPUT_DEVICE,
146     IAudioPolicyIpcCode::COMMAND_GET_SELECTED_DEVICE_INFO,
147     IAudioPolicyIpcCode::COMMAND_SELECT_INPUT_DEVICE,
148     IAudioPolicyIpcCode::COMMAND_GET_PREFERRED_OUTPUT_STREAM_TYPE,
149     IAudioPolicyIpcCode::COMMAND_GET_PREFERRED_INPUT_STREAM_TYPE,
150     IAudioPolicyIpcCode::COMMAND_CREATE_RENDERER_CLIENT,
151     IAudioPolicyIpcCode::COMMAND_CREATE_CAPTURER_CLIENT,
152     IAudioPolicyIpcCode::COMMAND_REGISTER_TRACKER,
153     IAudioPolicyIpcCode::COMMAND_UPDATE_TRACKER,
154     IAudioPolicyIpcCode::COMMAND_GET_CURRENT_RENDERER_CHANGE_INFOS,
155     IAudioPolicyIpcCode::COMMAND_GET_CURRENT_CAPTURER_CHANGE_INFOS,
156     IAudioPolicyIpcCode::COMMAND_SET_LOW_POWER_VOLUME,
157     IAudioPolicyIpcCode::COMMAND_GET_FAST_STREAM_INFO,
158     IAudioPolicyIpcCode::COMMAND_GET_LOW_POWER_VOLUME,
159     IAudioPolicyIpcCode::COMMAND_UPDATE_STREAM_STATE,
160     IAudioPolicyIpcCode::COMMAND_GET_SINGLE_STREAM_VOLUME,
161     IAudioPolicyIpcCode::COMMAND_GET_VOLUME_GROUP_INFOS,
162     IAudioPolicyIpcCode::COMMAND_GET_NETWORK_ID_BY_GROUP_ID,
163     IAudioPolicyIpcCode::COMMAND_GET_TONE_CONFIG,
164     IAudioPolicyIpcCode::COMMAND_GET_SUPPORTED_TONES,
165     IAudioPolicyIpcCode::COMMAND_GET_PREFERRED_OUTPUT_DEVICE_DESCRIPTORS,
166     IAudioPolicyIpcCode::COMMAND_GET_PREFERRED_INPUT_DEVICE_DESCRIPTORS,
167     IAudioPolicyIpcCode::COMMAND_SET_CLIENT_CALLBACKS_ENABLE,
168     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_FOCUS_INFO_LIST,
169     IAudioPolicyIpcCode::COMMAND_SET_SYSTEM_SOUND_URI,
170     IAudioPolicyIpcCode::COMMAND_GET_SYSTEM_SOUND_URI,
171     IAudioPolicyIpcCode::COMMAND_GET_MIN_STREAM_VOLUME,
172     IAudioPolicyIpcCode::COMMAND_GET_MAX_STREAM_VOLUME,
173     IAudioPolicyIpcCode::COMMAND_GET_MAX_RENDERER_INSTANCES,
174     IAudioPolicyIpcCode::COMMAND_IS_VOLUME_UNADJUSTABLE,
175     IAudioPolicyIpcCode::COMMAND_ADJUST_VOLUME_BY_STEP,
176     IAudioPolicyIpcCode::COMMAND_ADJUST_SYSTEM_VOLUME_BY_STEP,
177     IAudioPolicyIpcCode::COMMAND_GET_SYSTEM_VOLUME_IN_DB,
178     IAudioPolicyIpcCode::COMMAND_QUERY_EFFECT_SCENE_MODE,
179     IAudioPolicyIpcCode::COMMAND_GET_HARDWARE_OUTPUT_SAMPLING_RATE,
180     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_CAPTURER_MICROPHONE_DESCRIPTORS,
181     IAudioPolicyIpcCode::COMMAND_GET_AVAILABLE_MICROPHONES,
182     IAudioPolicyIpcCode::COMMAND_SET_DEVICE_ABS_VOLUME_SUPPORTED,
183     IAudioPolicyIpcCode::COMMAND_IS_ABS_VOLUME_SCENE,
184     IAudioPolicyIpcCode::COMMAND_SET_A2DP_DEVICE_VOLUME,
185     IAudioPolicyIpcCode::COMMAND_SET_NEARLINK_DEVICE_VOLUME,
186     IAudioPolicyIpcCode::COMMAND_GET_AVAILABLE_DEVICES,
187     IAudioPolicyIpcCode::COMMAND_SET_AVAILABLE_DEVICE_CHANGE_CALLBACK,
188     IAudioPolicyIpcCode::COMMAND_UNSET_AVAILABLE_DEVICE_CHANGE_CALLBACK,
189     IAudioPolicyIpcCode::COMMAND_IS_SPATIALIZATION_ENABLED,
190     IAudioPolicyIpcCode::COMMAND_IS_SPATIALIZATION_ENABLED_IN_STRING_OUT_BOOLEAN,
191     IAudioPolicyIpcCode::COMMAND_SET_SPATIALIZATION_ENABLED,
192     IAudioPolicyIpcCode::COMMAND_SET_SPATIALIZATION_ENABLED_IN_SHARED_PTR_AUDIO_DEVICE_AUDIODEVICEDESCRIPTOR_IN_BOOLEAN,
193     IAudioPolicyIpcCode::COMMAND_IS_HEAD_TRACKING_ENABLED,
194     IAudioPolicyIpcCode::COMMAND_IS_HEAD_TRACKING_ENABLED_IN_STRING_OUT_BOOLEAN,
195     IAudioPolicyIpcCode::COMMAND_SET_HEAD_TRACKING_ENABLED,
196     IAudioPolicyIpcCode::COMMAND_SET_HEAD_TRACKING_ENABLED_IN_SHARED_PTR_AUDIO_DEVICE_AUDIODEVICEDESCRIPTOR_IN_BOOLEAN,
197     IAudioPolicyIpcCode::COMMAND_GET_SPATIALIZATION_STATE,
198     IAudioPolicyIpcCode::COMMAND_IS_SPATIALIZATION_SUPPORTED,
199     IAudioPolicyIpcCode::COMMAND_IS_SPATIALIZATION_SUPPORTED_FOR_DEVICE,
200     IAudioPolicyIpcCode::COMMAND_IS_HEAD_TRACKING_SUPPORTED,
201     IAudioPolicyIpcCode::COMMAND_IS_HEAD_TRACKING_SUPPORTED_FOR_DEVICE,
202     IAudioPolicyIpcCode::COMMAND_UPDATE_SPATIAL_DEVICE_STATE,
203     IAudioPolicyIpcCode::COMMAND_REGISTER_SPATIALIZATION_STATE_EVENT_LISTENER,
204     IAudioPolicyIpcCode::COMMAND_CONFIG_DISTRIBUTED_ROUTING_ROLE,
205     IAudioPolicyIpcCode::COMMAND_SET_DISTRIBUTED_ROUTING_ROLE_CALLBACK,
206     IAudioPolicyIpcCode::COMMAND_UNSET_DISTRIBUTED_ROUTING_ROLE_CALLBACK,
207     IAudioPolicyIpcCode::COMMAND_UNREGISTER_SPATIALIZATION_STATE_EVENT_LISTENER,
208     IAudioPolicyIpcCode::COMMAND_REGISTER_POLICY_CALLBACK_CLIENT,
209     IAudioPolicyIpcCode::COMMAND_CREATE_AUDIO_INTERRUPT_ZONE,
210     IAudioPolicyIpcCode::COMMAND_ADD_AUDIO_INTERRUPT_ZONE_PIDS,
211     IAudioPolicyIpcCode::COMMAND_REMOVE_AUDIO_INTERRUPT_ZONE_PIDS,
212     IAudioPolicyIpcCode::COMMAND_RELEASE_AUDIO_INTERRUPT_ZONE,
213     IAudioPolicyIpcCode::COMMAND_REGISTER_AUDIO_ZONE_CLIENT,
214     IAudioPolicyIpcCode::COMMAND_CREATE_AUDIO_ZONE,
215     IAudioPolicyIpcCode::COMMAND_RELEASE_AUDIO_ZONE,
216     IAudioPolicyIpcCode::COMMAND_GET_ALL_AUDIO_ZONE,
217     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_ZONE,
218     IAudioPolicyIpcCode::COMMAND_BIND_DEVICE_TO_AUDIO_ZONE,
219     IAudioPolicyIpcCode::COMMAND_UN_BIND_DEVICE_TO_AUDIO_ZONE,
220     IAudioPolicyIpcCode::COMMAND_ENABLE_AUDIO_ZONE_REPORT,
221     IAudioPolicyIpcCode::COMMAND_ENABLE_AUDIO_ZONE_CHANGE_REPORT,
222     IAudioPolicyIpcCode::COMMAND_ADD_UID_TO_AUDIO_ZONE,
223     IAudioPolicyIpcCode::COMMAND_REMOVE_UID_FROM_AUDIO_ZONE,
224     IAudioPolicyIpcCode::COMMAND_ADD_STREAM_TO_AUDIO_ZONE,
225     IAudioPolicyIpcCode::COMMAND_REMOVE_STREAM_FROM_AUDIO_ZONE,
226     IAudioPolicyIpcCode::COMMAND_SET_ZONE_DEVICE_VISIBLE,
227     IAudioPolicyIpcCode::COMMAND_ENABLE_SYSTEM_VOLUME_PROXY,
228     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_INTERRUPT_FOR_ZONE,
229     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_INTERRUPT_FOR_ZONE_IN_INT_IN_STRING_OUT_LIST_
230         ORDEREDMAP_AUDIO_INTERRUPT_AUDIOINTERRUPT_INT,
231     IAudioPolicyIpcCode::COMMAND_ENABLE_AUDIO_ZONE_INTERRUPT_REPORT,
232     IAudioPolicyIpcCode::COMMAND_INJECT_INTERRUPT_TO_AUDIO_ZONE,
233     IAudioPolicyIpcCode::COMMAND_INJECT_INTERRUPT_TO_AUDIO_ZONE_IN_INT_IN_STRING_IN_LIST_
234         ORDEREDMAP_AUDIO_INTERRUPT_AUDIOINTERRUPT_INT,
235     IAudioPolicyIpcCode::COMMAND_SET_CALL_DEVICE_ACTIVE,
236     IAudioPolicyIpcCode::COMMAND_GET_CONVERTER_CONFIG,
237     IAudioPolicyIpcCode::COMMAND_GET_ACTIVE_BLUETOOTH_DEVICE,
238     IAudioPolicyIpcCode::COMMAND_FETCH_OUTPUT_DEVICE_FOR_TRACK,
239     IAudioPolicyIpcCode::COMMAND_FETCH_INPUT_DEVICE_FOR_TRACK,
240     IAudioPolicyIpcCode::COMMAND_IS_HIGH_RESOLUTION_EXIST,
241     IAudioPolicyIpcCode::COMMAND_SET_HIGH_RESOLUTION_EXIST,
242     IAudioPolicyIpcCode::COMMAND_GET_SPATIALIZATION_SCENE_TYPE,
243     IAudioPolicyIpcCode::COMMAND_SET_SPATIALIZATION_SCENE_TYPE,
244     IAudioPolicyIpcCode::COMMAND_GET_MAX_AMPLITUDE,
245     IAudioPolicyIpcCode::COMMAND_IS_HEAD_TRACKING_DATA_REQUESTED,
246     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_DEVICE_REFINER_CALLBACK,
247     IAudioPolicyIpcCode::COMMAND_UNSET_AUDIO_DEVICE_REFINER_CALLBACK,
248     IAudioPolicyIpcCode::COMMAND_TRIGGER_FETCH_DEVICE,
249     IAudioPolicyIpcCode::COMMAND_MOVE_TO_NEW_PIPE,
250     IAudioPolicyIpcCode::COMMAND_DISABLE_SAFE_MEDIA_VOLUME,
251     IAudioPolicyIpcCode::COMMAND_GET_DEVICES_INNER,
252     IAudioPolicyIpcCode::COMMAND_SET_MICROPHONE_MUTE_PERSISTENT,
253     IAudioPolicyIpcCode::COMMAND_GET_PERSISTENT_MIC_MUTE_STATE,
254     IAudioPolicyIpcCode::COMMAND_GET_SUPPORTED_AUDIO_EFFECT_PROPERTY,
255     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_EFFECT_PROPERTY,
256     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_EFFECT_PROPERTY,
257     IAudioPolicyIpcCode::COMMAND_GET_SUPPORTED_AUDIO_ENHANCE_PROPERTY,
258     IAudioPolicyIpcCode::COMMAND_GET_SUPPORTED_AUDIO_EFFECT_PROPERTY_OUT_AUDIOEFFECTPROPERTYARRAY,
259     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_ENHANCE_PROPERTY,
260     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_EFFECT_PROPERTY_OUT_AUDIOEFFECTPROPERTYARRAY,
261     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_ENHANCE_PROPERTY,
262     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_EFFECT_PROPERTY_IN_AUDIOEFFECTPROPERTYARRAY,
263     IAudioPolicyIpcCode::COMMAND_INJECT_INTERRUPTION,
264     IAudioPolicyIpcCode::COMMAND_ACTIVATE_AUDIO_SESSION,
265     IAudioPolicyIpcCode::COMMAND_DEACTIVATE_AUDIO_SESSION,
266     IAudioPolicyIpcCode::COMMAND_IS_AUDIO_SESSION_ACTIVATED,
267     IAudioPolicyIpcCode::COMMAND_SET_INPUT_DEVICE,
268     IAudioPolicyIpcCode::COMMAND_LOAD_SPLIT_MODULE,
269     IAudioPolicyIpcCode::COMMAND_GET_SYSTEM_ACTIVE_VOLUME_TYPE,
270     IAudioPolicyIpcCode::COMMAND_GET_OUTPUT_DEVICE,
271     IAudioPolicyIpcCode::COMMAND_GET_INPUT_DEVICE,
272     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_DEVICE_ANAHS_CALLBACK,
273     IAudioPolicyIpcCode::COMMAND_UNSET_AUDIO_DEVICE_ANAHS_CALLBACK,
274     IAudioPolicyIpcCode::COMMAND_IS_ALLOWED_PLAYBACK,
275     IAudioPolicyIpcCode::COMMAND_SET_VOICE_RINGTONE_MUTE,
276     IAudioPolicyIpcCode::COMMAND_SET_CALLBACK_RENDERER_INFO,
277     IAudioPolicyIpcCode::COMMAND_SET_CALLBACK_CAPTURER_INFO,
278     IAudioPolicyIpcCode::COMMAND_GET_STREAM_IN_FOCUS_BY_UID,
279     IAudioPolicyIpcCode::COMMAND_SET_PREFERRED_DEVICE,
280     IAudioPolicyIpcCode::COMMAND_SET_DEVICE_VOLUME_BEHAVIOR,
281     IAudioPolicyIpcCode::COMMAND_SET_VIRTUAL_CALL,
282     IAudioPolicyIpcCode::COMMAND_SET_DEVICE_CONNECTION_STATUS,
283     IAudioPolicyIpcCode::COMMAND_EXCLUDE_OUTPUT_DEVICES,
284     IAudioPolicyIpcCode::COMMAND_GET_EXCLUDED_DEVICES,
285     IAudioPolicyIpcCode::COMMAND_IS_SPATIALIZATION_ENABLED_FOR_CURRENT_DEVICE,
286     IAudioPolicyIpcCode::COMMAND_SET_QUERY_ALLOWED_PLAYBACK_CALLBACK,
287     IAudioPolicyIpcCode::COMMAND_ACTIVATE_PREEMPT_MODE,
288     IAudioPolicyIpcCode::COMMAND_DEACTIVATE_PREEMPT_MODE,
289     IAudioPolicyIpcCode::COMMAND_IS_FAST_PLAYBACK_SUPPORTED,
290     IAudioPolicyIpcCode::COMMAND_IS_FAST_RECORDING_SUPPORTED,
291     IAudioPolicyIpcCode::COMMAND_GET_DM_DEVICE_TYPE,
292     IAudioPolicyIpcCode::COMMAND_GET_DIRECT_PLAYBACK_SUPPORT,
293     IAudioPolicyIpcCode::COMMAND_NOTIFY_SESSION_STATE_CHANGE,
294     IAudioPolicyIpcCode::COMMAND_NOTIFY_FREEZE_STATE_CHANGE,
295     IAudioPolicyIpcCode::COMMAND_RESET_ALL_PROXY,
296     IAudioPolicyIpcCode::COMMAND_NOTIFY_PROCESS_BACKGROUND_STATE,
297     IAudioPolicyIpcCode::COMMAND_SET_BACKGROUND_MUTE_CALLBACK,
298     IAudioPolicyIpcCode::COMMAND_IS_ACOUSTIC_ECHO_CANCELER_SUPPORTED,
299     IAudioPolicyIpcCode::COMMAND_FORCE_STOP_AUDIO_STREAM,
300     IAudioPolicyIpcCode::COMMAND_IS_CAPTURER_FOCUS_AVAILABLE,
301     IAudioPolicyIpcCode::COMMAND_GET_MAX_VOLUME_LEVEL_BY_USAGE,
302     IAudioPolicyIpcCode::COMMAND_GET_MIN_VOLUME_LEVEL_BY_USAGE,
303     IAudioPolicyIpcCode::COMMAND_GET_VOLUME_LEVEL_BY_USAGE,
304     IAudioPolicyIpcCode::COMMAND_GET_STREAM_MUTE_BY_USAGE,
305     IAudioPolicyIpcCode::COMMAND_GET_VOLUME_IN_DB_BY_STREAM,
306     IAudioPolicyIpcCode::COMMAND_GET_SUPPORTED_AUDIO_VOLUME_TYPES,
307     IAudioPolicyIpcCode::COMMAND_GET_AUDIO_VOLUME_TYPE_BY_STREAM_USAGE,
308     IAudioPolicyIpcCode::COMMAND_GET_STREAM_USAGES_BY_VOLUME_TYPE,
309     IAudioPolicyIpcCode::COMMAND_SET_CALLBACK_STREAM_USAGE_INFO,
310     IAudioPolicyIpcCode::COMMAND_UPDATE_DEVICE_INFO,
311     IAudioPolicyIpcCode::COMMAND_SET_SLE_AUDIO_OPERATION_CALLBACK,
312     IAudioPolicyIpcCode::COMMAND_SET_KARAOKE_PARAMETERS,
313     IAudioPolicyIpcCode::COMMAND_IS_AUDIO_LOOPBACK_SUPPORTED,
314     IAudioPolicyIpcCode::COMMAND_SET_COLLABORATIVE_PLAYBACK_ENABLED_FOR_DEVICE,
315     IAudioPolicyIpcCode::COMMAND_IS_COLLABORATIVE_PLAYBACK_SUPPORTED,
316     IAudioPolicyIpcCode::COMMAND_IS_COLLABORATIVE_PLAYBACK_ENABLED_FOR_DEVICE,
317     IAudioPolicyIpcCode::COMMAND_SET_AUDIO_SESSION_SCENE,
318     IAudioPolicyIpcCode::COMMAND_GET_DEFAULT_OUTPUT_DEVICE,
319     IAudioPolicyIpcCode::COMMAND_SET_DEFAULT_OUTPUT_DEVICE,
320     IAudioPolicyIpcCode::COMMAND_FORCE_VOLUME_KEY_CONTROL_TYPE,
321     IAudioPolicyIpcCode::COMMAND_SET_QUERY_DEVICE_VOLUME_BEHAVIOR_CALLBACK,
322 };
323 
OnRemoteRequestFuzzTest()324 void OnRemoteRequestFuzzTest()
325 {
326     sptr<AudioPolicyServer> server = GetServerPtr();
327     if (server == nullptr) {
328         return;
329     }
330     MessageParcel data;
331     data.WriteInterfaceToken(AudioPolicyStub::GetDescriptor());
332     MessageParcel reply;
333     MessageOption option;
334     for (size_t i = 0; i < IAudioPolicyIpcCodeVec.size(); i++) {
335         IAudioPolicyIpcCode audioServerInterfaceCode = IAudioPolicyIpcCodeVec[i];
336         uint32_t code = static_cast<uint32_t>(audioServerInterfaceCode);
337         server->OnRemoteRequest(code, data, reply, option);
338     }
339 }
340 
341 vector<TestFuncs> g_testFuncs = {
342     OnRemoteRequestFuzzTest
343 };
344 
345 } // namespace AudioStandard
346 } // namesapce OHOS
347 
348 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)349 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
350 {
351     if (size < OHOS::AudioStandard::FUZZ_INPUT_SIZE_THRESHOLD) {
352         return 0;
353     }
354 
355     OHOS::AudioStandard::g_fuzzUtils.fuzzTest(data, size, OHOS::AudioStandard::g_testFuncs);
356     return 0;
357 }