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 }