• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2022 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 "audio_manager_base.h"
20 #include "audio_policy_manager_listener_stub_impl.h"
21 #include "audio_server.h"
22 #include "message_parcel.h"
23 #include "pulseaudio_ipc_interface_code.h"
24 #include "audio_service_types.h"
25 #include "../fuzz_utils.h"
26 using namespace std;
27 namespace OHOS {
28 namespace AudioStandard {
29 FuzzUtils &g_fuzzUtils = FuzzUtils::GetInstance();
30 constexpr int32_t OFFSET = 4;
31 const std::u16string FORMMGR_INTERFACE_TOKEN = u"OHOS.AudioStandard.IAudioPolicy";
32 const int32_t SYSTEM_ABILITY_ID = 3001;
33 const bool RUN_ON_CREATE = false;
34 const int32_t NUM_2 = 2;
35 const int32_t LIMITSIZE = 4;
36 const int32_t SHIFT_LEFT_8 = 8;
37 const int32_t SHIFT_LEFT_16 = 16;
38 const int32_t SHIFT_LEFT_24 = 24;
39 const uint32_t LIMIT_MIN = 0;
40 const int32_t AUDIO_DISTRIBUTED_SERVICE_ID = 3001;
41 const int32_t AUDIO_POLICY_SERVICE_ID = 3009;
42 const uint32_t LIMIT_MAX = static_cast<uint32_t>(AudioServerInterfaceCode::AUDIO_SERVER_CODE_MAX);
43 typedef void (*TestPtr)(const uint8_t *, size_t);
44 
45 const vector<std::string> g_testKeys = {
46     "PCM_DUMP",
47     "hpae_effect",
48     "test",
49 };
50 const vector<DeviceType> g_testDeviceTypes = {
51     DEVICE_TYPE_NONE,
52     DEVICE_TYPE_INVALID,
53     DEVICE_TYPE_EARPIECE,
54     DEVICE_TYPE_SPEAKER,
55     DEVICE_TYPE_WIRED_HEADSET,
56     DEVICE_TYPE_WIRED_HEADPHONES,
57     DEVICE_TYPE_BLUETOOTH_SCO,
58     DEVICE_TYPE_BLUETOOTH_A2DP,
59     DEVICE_TYPE_BLUETOOTH_A2DP_IN,
60     DEVICE_TYPE_MIC,
61     DEVICE_TYPE_WAKEUP,
62     DEVICE_TYPE_USB_HEADSET,
63     DEVICE_TYPE_DP,
64     DEVICE_TYPE_REMOTE_CAST,
65     DEVICE_TYPE_USB_DEVICE,
66     DEVICE_TYPE_ACCESSORY,
67     DEVICE_TYPE_REMOTE_DAUDIO,
68     DEVICE_TYPE_HDMI,
69     DEVICE_TYPE_LINE_DIGITAL,
70     DEVICE_TYPE_NEARLINK,
71     DEVICE_TYPE_NEARLINK_IN,
72     DEVICE_TYPE_FILE_SINK,
73     DEVICE_TYPE_FILE_SOURCE,
74     DEVICE_TYPE_EXTERN_CABLE,
75     DEVICE_TYPE_DEFAULT,
76     DEVICE_TYPE_USB_ARM_HEADSET,
77     DEVICE_TYPE_MAX
78 };
79 const vector<DeviceFlag> g_testDeviceFlags = {
80     NONE_DEVICES_FLAG,
81     OUTPUT_DEVICES_FLAG,
82     INPUT_DEVICES_FLAG,
83     ALL_DEVICES_FLAG,
84     DISTRIBUTED_OUTPUT_DEVICES_FLAG,
85     DISTRIBUTED_INPUT_DEVICES_FLAG,
86     ALL_DISTRIBUTED_DEVICES_FLAG,
87     ALL_L_D_DEVICES_FLAG,
88     DEVICE_FLAG_MAX
89 };
90 const vector<HdiIdType> g_testHdiIdTypes = {
91     HDI_ID_TYPE_PRIMARY,
92     HDI_ID_TYPE_FAST,
93     HDI_ID_TYPE_REMOTE,
94     HDI_ID_TYPE_REMOTE_FAST,
95     HDI_ID_TYPE_FILE,
96     HDI_ID_TYPE_BLUETOOTH,
97     HDI_ID_TYPE_OFFLOAD,
98     HDI_ID_TYPE_EAC3,
99     HDI_ID_TYPE_MULTICHANNEL,
100     HDI_ID_TYPE_WAKEUP,
101     HDI_ID_TYPE_ACCESSORY,
102     HDI_ID_TYPE_NUM,
103 };
104 
105 class DataTransferStateChangeCallbackInnerFuzzTest : public DataTransferStateChangeCallbackInner {
106 public:
OnDataTransferStateChange(const int32_t & callbackId,const AudioRendererDataTransferStateChangeInfo & info)107     void OnDataTransferStateChange(const int32_t &callbackId,
108             const AudioRendererDataTransferStateChangeInfo &info) override {}
OnMuteStateChange(const int32_t & callbackId,const int32_t & uid,const uint32_t & sessionId,const bool & isMuted)109     void OnMuteStateChange(const int32_t &callbackId, const int32_t &uid,
110         const uint32_t &sessionId, const bool &isMuted) override {}
111 };
112 template<class T>
GetArrLength(T & arr)113 uint32_t GetArrLength(T& arr)
114 {
115     if (arr == nullptr) {
116         AUDIO_INFO_LOG("%{public}s: The array length is equal to 0", __func__);
117         return 0;
118     }
119     return sizeof(arr) / sizeof(arr[0]);
120 }
Convert2Uint32(const uint8_t * ptr)121 uint32_t Convert2Uint32(const uint8_t *ptr)
122 {
123     if (ptr == nullptr) {
124         return 0;
125     }
126     /* Move the 0th digit to the left by 24 bits, the 1st digit to the left by 16 bits,
127        the 2nd digit to the left by 8 bits, and the 3rd digit not to the left */
128     return (ptr[0] << SHIFT_LEFT_24) | (ptr[1] << SHIFT_LEFT_16) | (ptr[2] << SHIFT_LEFT_8) | (ptr[3]);
129 }
130 
AudioServerFuzzTest(const uint8_t * rawData,size_t size)131 void AudioServerFuzzTest(const uint8_t *rawData, size_t size)
132 {
133     if (rawData == nullptr || size < LIMITSIZE) {
134         return;
135     }
136     uint32_t code =  Convert2Uint32(rawData) % (LIMIT_MAX - LIMIT_MIN + 1) + LIMIT_MIN;
137     rawData = rawData + OFFSET;
138     size = size - OFFSET;
139     MessageParcel data;
140     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
141     data.WriteBuffer(rawData, size);
142     data.RewindRead(0);
143     MessageParcel reply;
144     MessageOption option;
145     std::shared_ptr<AudioServer> AudioServerPtr =
146         std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
147     if (code == static_cast<uint32_t>(AudioServerInterfaceCode::SET_PARAMETER_CALLBACK)) {
148         sptr<AudioPolicyManagerListenerStubImpl> focusListenerStub =
149             new(std::nothrow) AudioPolicyManagerListenerStubImpl();
150         sptr<IRemoteObject> object = focusListenerStub->AsObject();
151         AudioServerPtr->SetParameterCallback(object);
152         return;
153     }
154     if (code == static_cast<uint32_t>(AudioServerInterfaceCode::GET_ASR_AEC_MODE)) {
155         int32_t asrAecMode = 0;
156         AudioServerPtr->SetAsrAecMode(asrAecMode);
157         AudioServerPtr->OnRemoteRequest(code, data, reply, option);
158         return;
159     }
160     AudioServerPtr->OnRemoteRequest(code, data, reply, option);
161     if (size < LIMITSIZE) {
162         return;
163     }
164     std::string netWorkId(reinterpret_cast<const char*>(rawData), size - 1);
165     AudioParamKey key = *reinterpret_cast<const AudioParamKey *>(rawData);
166     std::string condition(reinterpret_cast<const char*>(rawData), size - 1);
167     std::string value(reinterpret_cast<const char*>(rawData), size - 1);
168     AudioServerPtr->OnRenderSinkParamChange(netWorkId, key, condition, value);
169 }
170 
Convert2Float(const uint8_t * ptr)171 float Convert2Float(const uint8_t *ptr)
172 {
173     float floatValue = static_cast<float>(*ptr);
174     return floatValue / 128.0f - 1.0f;
175 }
176 
AudioServerOffloadSetVolumeFuzzTest(const uint8_t * rawData,size_t size)177 void AudioServerOffloadSetVolumeFuzzTest(const uint8_t *rawData, size_t size)
178 {
179     if (rawData == nullptr || size < LIMITSIZE) {
180         return;
181     }
182     MessageParcel data;
183     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
184     float volume = Convert2Float(rawData);
185     data.WriteFloat(volume);
186     MessageParcel reply;
187     MessageOption option;
188     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
189     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::OFFLOAD_SET_VOLUME),
190         data, reply, option);
191 }
192 
AudioServerNotifyStreamVolumeChangedFuzzTest(const uint8_t * rawData,size_t size)193 void AudioServerNotifyStreamVolumeChangedFuzzTest(const uint8_t *rawData, size_t size)
194 {
195     if (rawData == nullptr || size < LIMITSIZE) {
196         return;
197     }
198     MessageParcel data;
199     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
200     uint32_t sizeMs = *reinterpret_cast<const uint32_t*>(rawData);
201     data.WriteUint32(sizeMs);
202     MessageParcel reply;
203     MessageOption option;
204     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
205     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::NOTIFY_STREAM_VOLUME_CHANGED),
206         data, reply, option);
207 }
208 
AudioServerResetRouteForDisconnectFuzzTest(const uint8_t * rawData,size_t size)209 void AudioServerResetRouteForDisconnectFuzzTest(const uint8_t *rawData, size_t size)
210 {
211     if (rawData == nullptr || size < LIMITSIZE) {
212         return;
213     }
214     MessageParcel data;
215     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
216     int32_t deviceType = *reinterpret_cast<const int32_t*>(rawData);
217     data.WriteInt32(deviceType);
218     MessageParcel reply;
219     MessageOption option;
220     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
221     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::RESET_ROUTE_FOR_DISCONNECT),
222         data, reply, option);
223 }
224 
AudioServerGetEffectLatencyTest(const uint8_t * rawData,size_t size)225 void AudioServerGetEffectLatencyTest(const uint8_t *rawData, size_t size)
226 {
227     if (rawData == nullptr || size < LIMITSIZE) {
228         return;
229     }
230     MessageParcel data;
231     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
232     std::string sessionId(reinterpret_cast<const char*>(rawData), size);
233     data.WriteString(sessionId);
234     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
235     MessageParcel reply;
236     MessageOption option;
237     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::GET_EFFECT_LATENCY),
238         data, reply, option);
239 }
240 
AudioServerUpdateLatencyTimestampTest(const uint8_t * rawData,size_t size)241 void AudioServerUpdateLatencyTimestampTest(const uint8_t *rawData, size_t size)
242 {
243     if (rawData == nullptr || size < LIMITSIZE) {
244         return;
245     }
246     MessageParcel data;
247     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
248     std::string timestamp(reinterpret_cast<const char*>(rawData), size - 1);
249     bool isRenderer = *reinterpret_cast<const bool*>(rawData);
250     data.WriteString(timestamp);
251     data.WriteBool(isRenderer);
252     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
253     MessageParcel reply;
254     MessageOption option;
255     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::UPDATE_LATENCY_TIMESTAMP),
256         data, reply, option);
257 }
258 
AudioServerGetMaxAmplitudeTest(const uint8_t * rawData,size_t size)259 void AudioServerGetMaxAmplitudeTest(const uint8_t *rawData, size_t size)
260 {
261     if (rawData == nullptr || size < LIMITSIZE) {
262         return;
263     }
264     MessageParcel data;
265     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
266     bool isOutputDevice = *reinterpret_cast<const bool*>(rawData);
267     int32_t deviceType = *reinterpret_cast<const int32_t*>(rawData);
268     data.WriteBool(isOutputDevice);
269     data.WriteInt32(deviceType);
270     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
271     MessageParcel reply;
272     MessageOption option;
273     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::GET_MAX_AMPLITUDE),
274         data, reply, option);
275 }
276 
AudioServerResetAudioEndpointTest(const uint8_t * rawData,size_t size)277 void AudioServerResetAudioEndpointTest(const uint8_t *rawData, size_t size)
278 {
279     if (rawData == nullptr || size < LIMITSIZE) {
280         return;
281     }
282     MessageParcel data;
283     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
284     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
285     MessageParcel reply;
286     MessageOption option;
287     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::RESET_AUDIO_ENDPOINT),
288         data, reply, option);
289 }
290 
AudioServerCreatePlaybackCapturerManagerTest(const uint8_t * rawData,size_t size)291 void AudioServerCreatePlaybackCapturerManagerTest(const uint8_t *rawData, size_t size)
292 {
293     if (rawData == nullptr || size < LIMITSIZE) {
294         return;
295     }
296     MessageParcel data;
297     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
298     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
299     MessageParcel reply;
300     MessageOption option;
301     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::CREATE_PLAYBACK_CAPTURER_MANAGER),
302         data, reply, option);
303 }
304 
AudioServerSetOutputDeviceSinkTest(const uint8_t * rawData,size_t size)305 void AudioServerSetOutputDeviceSinkTest(const uint8_t *rawData, size_t size)
306 {
307     if (rawData == nullptr || size < LIMITSIZE) {
308         return;
309     }
310     MessageParcel data;
311     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
312     int32_t deviceType = *reinterpret_cast<const int32_t*>(rawData);
313     std::string sinkName(reinterpret_cast<const char*>(rawData), size - 1);
314     data.WriteInt32(deviceType);
315     data.WriteString(sinkName);
316     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
317     MessageParcel reply;
318     MessageOption option;
319     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_OUTPUT_DEVICE_SINK),
320         data, reply, option);
321 }
322 
AudioServerSetAudioMonoStateTest(const uint8_t * rawData,size_t size)323 void AudioServerSetAudioMonoStateTest(const uint8_t *rawData, size_t size)
324 {
325     if (rawData == nullptr || size < LIMITSIZE) {
326         return;
327     }
328     MessageParcel data;
329     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
330     bool audioMono = *reinterpret_cast<const bool*>(rawData);
331     data.WriteBool(audioMono);
332     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
333     MessageParcel reply;
334     MessageOption option;
335     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_AUDIO_MONO_STATE),
336         data, reply, option);
337 }
338 
AudioServerSetVoiceVolumeTest(const uint8_t * rawData,size_t size)339 void AudioServerSetVoiceVolumeTest(const uint8_t *rawData, size_t size)
340 {
341     if (rawData == nullptr || size < LIMITSIZE) {
342         return;
343     }
344     MessageParcel data;
345     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
346     float volume = *reinterpret_cast<const float*>(rawData);
347     data.WriteFloat(volume);
348     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
349     MessageParcel reply;
350     MessageOption option;
351     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_VOICE_VOLUME),
352         data, reply, option);
353 }
354 
AudioServerCheckRemoteDeviceStateTest(const uint8_t * rawData,size_t size)355 void AudioServerCheckRemoteDeviceStateTest(const uint8_t *rawData, size_t size)
356 {
357     if (rawData == nullptr || size < LIMITSIZE) {
358         return;
359     }
360     MessageParcel data;
361     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
362     std::string networkId(reinterpret_cast<const char*>(rawData), size - 1);
363     DeviceRole deviceRole = *reinterpret_cast<const DeviceRole*>(rawData);
364     bool isStartDevice = *reinterpret_cast<const bool*>(rawData);
365     data.WriteString(networkId);
366     data.WriteInt32(static_cast<int32_t>(deviceRole));
367     data.WriteBool(isStartDevice);
368     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
369     MessageParcel reply;
370     MessageOption option;
371     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::CHECK_REMOTE_DEVICE_STATE),
372         data, reply, option);
373 }
374 
AudioServerNotifyDeviceInfoTest(const uint8_t * rawData,size_t size)375 void AudioServerNotifyDeviceInfoTest(const uint8_t *rawData, size_t size)
376 {
377     if (rawData == nullptr || size < LIMITSIZE) {
378         return;
379     }
380 
381     MessageParcel data;
382     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
383     std::string networkId(reinterpret_cast<const char*>(rawData), size - 1);
384     bool connected = *reinterpret_cast<const bool*>(rawData);
385     data.WriteString(networkId);
386     data.WriteBool(connected);
387 
388     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
389     MessageParcel reply;
390     MessageOption option;
391     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::NOTIFY_DEVICE_INFO),
392         data, reply, option);
393 }
394 
AudioServerGetAudioParameterTest(const uint8_t * rawData,size_t size)395 void AudioServerGetAudioParameterTest(const uint8_t *rawData, size_t size)
396 {
397     if (rawData == nullptr || size < LIMITSIZE) {
398         return;
399     }
400 
401     MessageParcel data;
402     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
403     std::string key(reinterpret_cast<const char*>(rawData), size - 1);
404     data.WriteString(key);
405     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
406     MessageParcel reply;
407     MessageOption option;
408     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::GET_AUDIO_PARAMETER),
409         data, reply, option);
410 }
411 
AudioServerSetAudioParameterTest(const uint8_t * rawData,size_t size)412 void AudioServerSetAudioParameterTest(const uint8_t *rawData, size_t size)
413 {
414     if (rawData == nullptr || size < LIMITSIZE) {
415         return;
416     }
417 
418     MessageParcel data;
419     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
420     std::string key(reinterpret_cast<const char*>(rawData), size - 1);
421     std::string value(reinterpret_cast<const char*>(rawData), size - 1);
422     data.WriteString(key);
423     data.WriteString(value);
424     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
425     MessageParcel reply;
426     MessageOption option;
427     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_AUDIO_PARAMETER),
428         data, reply, option);
429 }
430 
AudioServerSetMicrophoneMuteTest(const uint8_t * rawData,size_t size)431 void AudioServerSetMicrophoneMuteTest(const uint8_t *rawData, size_t size)
432 {
433     if (rawData == nullptr || size < LIMITSIZE) {
434         return;
435     }
436 
437     MessageParcel data;
438     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
439     bool isMute = *reinterpret_cast<const bool*>(rawData);
440     data.WriteBool(isMute);
441     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
442     MessageParcel reply;
443     MessageOption option;
444     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_MICROPHONE_MUTE),
445         data, reply, option);
446 }
447 
AudioServerSetAudioBalanceValueTest(const uint8_t * rawData,size_t size)448 void AudioServerSetAudioBalanceValueTest(const uint8_t *rawData, size_t size)
449 {
450     if (rawData == nullptr || size < LIMITSIZE) {
451         return;
452     }
453     MessageParcel data;
454     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
455     float audioBalance = *reinterpret_cast<const float*>(rawData);
456     data.WriteFloat(audioBalance);
457     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
458     MessageParcel reply;
459     MessageOption option;
460     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_AUDIO_BALANCE_VALUE),
461         data, reply, option);
462 }
463 
AudioServerSetAudioSceneTest(const uint8_t * rawData,size_t size)464 void AudioServerSetAudioSceneTest(const uint8_t *rawData, size_t size)
465 {
466     if (rawData == nullptr || size < LIMITSIZE) {
467         return;
468     }
469     MessageParcel data;
470     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
471     AudioScene audioScene = *reinterpret_cast<const AudioScene*>(rawData);
472     data.WriteInt32(static_cast<int32_t>(audioScene));
473     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
474     MessageParcel reply;
475     MessageOption option;
476     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_AUDIO_SCENE),
477         data, reply, option);
478 }
479 
AudioServerSetOffloadModeTest(const uint8_t * rawData,size_t size)480 void AudioServerSetOffloadModeTest(const uint8_t *rawData, size_t size)
481 {
482     if (rawData == nullptr || size < LIMITSIZE) {
483         return;
484     }
485     MessageParcel data;
486     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
487     uint32_t sessionId = *reinterpret_cast<const uint32_t*>(rawData);
488     int32_t state = *reinterpret_cast<const int32_t*>(rawData);
489     bool isAppBack = *reinterpret_cast<const bool*>(rawData);
490     data.WriteUint32(sessionId);
491     data.WriteInt32(state);
492     data.WriteBool(isAppBack);
493     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
494     MessageParcel reply;
495     MessageOption option;
496     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_OFFLOAD_MODE),
497         data, reply, option);
498 }
499 
AudioServerUnsetOffloadTest(const uint8_t * rawData,size_t size)500 void AudioServerUnsetOffloadTest(const uint8_t *rawData, size_t size)
501 {
502     if (rawData == nullptr || size < LIMITSIZE) {
503         return;
504     }
505     MessageParcel data;
506     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
507     uint32_t sessionId = *reinterpret_cast<const uint32_t*>(rawData);
508     data.WriteUint32(sessionId);
509     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
510     MessageParcel reply;
511     MessageOption option;
512     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::UNSET_OFFLOAD_MODE),
513         data, reply, option);
514 }
515 
AudioServerCheckHibernateStateTest(const uint8_t * rawData,size_t size)516 void AudioServerCheckHibernateStateTest(const uint8_t *rawData, size_t size)
517 {
518     if (rawData == nullptr || size < LIMITSIZE) {
519         return;
520     }
521     MessageParcel data;
522     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
523     bool hibernate = *reinterpret_cast<const bool*>(rawData);
524     data.WriteBool(hibernate);
525     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
526     MessageParcel reply;
527     MessageOption option;
528     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::CHECK_HIBERNATE_STATE),
529         data, reply, option);
530 }
531 
AudioServerSetSessionMuteStateTest(const uint8_t * rawData,size_t size)532 void AudioServerSetSessionMuteStateTest(const uint8_t *rawData, size_t size)
533 {
534     if (rawData == nullptr || size < LIMITSIZE) {
535         return;
536     }
537     MessageParcel data;
538     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
539     uint32_t sessionId = 10;
540     data.WriteInt32(sessionId);
541     data.WriteBool(true);
542     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
543     MessageParcel reply;
544     MessageOption option;
545     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::SET_SESSION_MUTE_STATE),
546         data, reply, option);
547 }
548 
AudioServerNotifyMuteStateChangeTest(const uint8_t * rawData,size_t size)549 void AudioServerNotifyMuteStateChangeTest(const uint8_t *rawData, size_t size)
550 {
551     if (rawData == nullptr || size < LIMITSIZE) {
552         return;
553     }
554 
555     MessageParcel data;
556     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
557     uint32_t sessionId = 10;
558     data.WriteInt32(sessionId);
559     data.WriteBool(true);
560 
561     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
562     MessageParcel reply;
563     MessageOption option;
564     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::NOTIFY_MUTE_STATE_CHANGE),
565         data, reply, option);
566 }
567 
AudioServerAudioWorkgroupCreateTest(const uint8_t * rawData,size_t size)568 void AudioServerAudioWorkgroupCreateTest(const uint8_t *rawData, size_t size)
569 {
570     if (rawData == nullptr || size < LIMITSIZE) {
571         return;
572     }
573 
574     MessageParcel data;
575     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
576     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
577     data.WriteInt32(static_cast<int32_t>(testPid));
578 
579     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
580     MessageParcel reply;
581     MessageOption option;
582     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::CREATE_AUDIOWORKGROUP),
583         data, reply, option);
584 }
585 
AudioServerAudioWorkgroupReleaseTest(const uint8_t * rawData,size_t size)586 void AudioServerAudioWorkgroupReleaseTest(const uint8_t *rawData, size_t size)
587 {
588     if (rawData == nullptr || size < LIMITSIZE) {
589         return;
590     }
591 
592     MessageParcel data;
593     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
594     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
595     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
596     data.WriteInt32(static_cast<int32_t>(testPid));
597     data.WriteInt32(static_cast<int32_t>(workgroupId));
598 
599     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
600     MessageParcel reply;
601     MessageOption option;
602     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::RELEASE_AUDIOWORKGROUP),
603         data, reply, option);
604 }
605 
AudioServerAudioWorkgroupAddThreadTest(const uint8_t * rawData,size_t size)606 void AudioServerAudioWorkgroupAddThreadTest(const uint8_t *rawData, size_t size)
607 {
608     if (rawData == nullptr || size < LIMITSIZE) {
609         return;
610     }
611 
612     MessageParcel data;
613     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
614     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
615     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
616     int32_t tokenId = *reinterpret_cast<const int32_t*>(rawData);
617     data.WriteInt32(static_cast<int32_t>(testPid));
618     data.WriteInt32(static_cast<int32_t>(workgroupId));
619     data.WriteInt32(static_cast<int32_t>(tokenId));
620 
621     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
622     MessageParcel reply;
623     MessageOption option;
624     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::ADD_THREAD_TO_AUDIOWORKGROUP),
625         data, reply, option);
626 }
627 
AudioServerAudioWorkgroupRemoveThreadTest(const uint8_t * rawData,size_t size)628 void AudioServerAudioWorkgroupRemoveThreadTest(const uint8_t *rawData, size_t size)
629 {
630     if (rawData == nullptr || size < LIMITSIZE) {
631         return;
632     }
633 
634     MessageParcel data;
635     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
636     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
637     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
638     int32_t tokenId = *reinterpret_cast<const int32_t*>(rawData);
639     data.WriteInt32(static_cast<int32_t>(testPid));
640     data.WriteInt32(static_cast<int32_t>(workgroupId));
641     data.WriteInt32(static_cast<int32_t>(tokenId));
642 
643     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
644     MessageParcel reply;
645     MessageOption option;
646     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::REMOVE_THREAD_FROM_AUDIOWORKGROUP),
647         data, reply, option);
648 }
649 
AudioServerAudioWorkgroupStartGroupTest(const uint8_t * rawData,size_t size)650 void AudioServerAudioWorkgroupStartGroupTest(const uint8_t *rawData, size_t size)
651 {
652     if (rawData == nullptr || size < LIMITSIZE) {
653         return;
654     }
655 
656     MessageParcel data;
657     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
658     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
659     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
660     uint64_t startTime = *reinterpret_cast<const int32_t*>(rawData);
661     uint64_t deadlineTime = *reinterpret_cast<const int32_t*>(rawData);
662     data.WriteInt32(static_cast<int32_t>(testPid));
663     data.WriteInt32(static_cast<int32_t>(workgroupId));
664     data.WriteUint64(static_cast<int32_t>(startTime));
665     data.WriteUint64(static_cast<int32_t>(deadlineTime));
666 
667     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
668     MessageParcel reply;
669     MessageOption option;
670     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::START_AUDIOWORKGROUP),
671         data, reply, option);
672 }
673 
AudioServerAudioWorkgroupStopGroupTest(const uint8_t * rawData,size_t size)674 void AudioServerAudioWorkgroupStopGroupTest(const uint8_t *rawData, size_t size)
675 {
676     if (rawData == nullptr || size < LIMITSIZE) {
677         return;
678     }
679 
680     MessageParcel data;
681     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
682     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
683     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
684     data.WriteInt32(static_cast<int32_t>(testPid));
685     data.WriteInt32(static_cast<int32_t>(workgroupId));
686 
687     std::shared_ptr<AudioServer> AudioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
688     MessageParcel reply;
689     MessageOption option;
690     AudioServerPtr->OnRemoteRequest(static_cast<uint32_t>(AudioServerInterfaceCode::STOP_AUDIOWORKGROUP),
691         data, reply, option);
692 }
693 
AudioServerDumpTest(const uint8_t * rawData,size_t size)694 void AudioServerDumpTest(const uint8_t *rawData, size_t size)
695 {
696     if (rawData == nullptr || size < LIMITSIZE) {
697         return;
698     }
699     vector<std::u16string> gTestDumpArges = {
700         u"-fb",
701         u"test",
702         u"test2",
703         u"test3",
704     };
705     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
706     std::vector<std::u16string> args(gTestDumpArges.begin(), gTestDumpArges.begin() +
707         (static_cast<uint32_t>(size) % gTestDumpArges.size()));
708     int32_t fd = static_cast<int32_t>(size);
709 
710     audioServerPtr->Dump(fd, args);
711 }
712 
AudioServerGetUsbParameterTest(const uint8_t * rawData,size_t size)713 void AudioServerGetUsbParameterTest(const uint8_t *rawData, size_t size)
714 {
715     if (rawData == nullptr || size < LIMITSIZE) {
716         return;
717     }
718     const vector<std::string> params = {
719         "address=card2;device=0 role=1",
720         "address=card2;device=0 role=2"
721     };
722     std::string param = params[*reinterpret_cast<const uint32_t*>(rawData) % params.size()];
723     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
724     audioServerPtr->GetUsbParameter(param);
725 }
726 
AudioServerOnAddSystemAbilityTest(const uint8_t * rawData,size_t size)727 void AudioServerOnAddSystemAbilityTest(const uint8_t *rawData, size_t size)
728 {
729     if (rawData == nullptr || size < LIMITSIZE) {
730         return;
731     }
732     vector<int32_t> gTestSystemAbilityId = {
733         0,
734         AUDIO_POLICY_SERVICE_ID,
735         AUDIO_DISTRIBUTED_SERVICE_ID,
736     };
737     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
738 
739     uint32_t id = static_cast<uint32_t>(size) % gTestSystemAbilityId.size();
740     std::string deviceId = "0";
741 
742     audioServerPtr->OnAddSystemAbility(gTestSystemAbilityId[id], deviceId);
743 }
744 
AudioServerSetExtraParametersTest(const uint8_t * rawData,size_t size)745 void AudioServerSetExtraParametersTest(const uint8_t *rawData, size_t size)
746 {
747     if (rawData == nullptr || size < LIMITSIZE) {
748         return;
749     }
750 
751     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
752     std::vector<std::pair<std::string, std::string>> kvpairs;
753     uint32_t id = static_cast<uint32_t>(size) % g_testKeys.size();
754     std::string key = g_testKeys[id];
755     std::pair<std::string, std::string> kvpair = std::make_pair(g_testKeys[id], g_testKeys[id]);
756     kvpairs.push_back(kvpair);
757     audioServerPtr->CacheExtraParameters(key, kvpairs);
758     audioServerPtr->ParseAudioParameter();
759 }
760 
AudioServerSetAudioParameterByKeyTest(const uint8_t * rawData,size_t size)761 void AudioServerSetAudioParameterByKeyTest(const uint8_t *rawData, size_t size)
762 {
763     if (rawData == nullptr || size < LIMITSIZE) {
764         return;
765     }
766     vector<std::string> gTestAudioParameterKeys = {
767         "AUDIO_EXT_PARAM_KEY_A2DP_OFFLOAD_CONFIG",
768         "A2dpSuspended",
769         "AUDIO_EXT_PARAM_KEY_LOWPOWER",
770         "bt_headset_nrec",
771         "bt_wbs",
772         "AUDIO_EXT_PARAM_KEY_A2DP_OFFLOAD_CONFIG",
773         "mmi",
774         "perf_info",
775     };
776 
777     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
778     uint32_t id = static_cast<uint32_t>(size) % gTestAudioParameterKeys.size();
779     audioServerPtr->SetAudioParameter(gTestAudioParameterKeys[id], "");
780 }
781 
AudioServerGetExtraParametersTest(const uint8_t * rawData,size_t size)782 void AudioServerGetExtraParametersTest(const uint8_t *rawData, size_t size)
783 {
784     if (rawData == nullptr || size < LIMITSIZE) {
785         return;
786     }
787 
788     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
789     uint32_t id = static_cast<uint32_t>(size) % g_testKeys.size();
790     bool isAudioParameterParsed = static_cast<uint32_t>(size) % NUM_2;
791     audioServerPtr->isAudioParameterParsed_.store(isAudioParameterParsed);
792     std::vector<StringPair> result;
793     std::vector<std::string> subKeys;
794     audioServerPtr->GetExtraParameters(g_testKeys[id], subKeys, result);
795 }
796 
AudioServerGetAudioParameterByIdTest(const uint8_t * rawData,size_t size)797 void AudioServerGetAudioParameterByIdTest(const uint8_t *rawData, size_t size)
798 {
799     if (rawData == nullptr || size < LIMITSIZE) {
800         return;
801     }
802 
803     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
804     vector<std::string> tetsNetworkId = {
805         "LocalDevice",
806         "TestNetwork",
807     };
808     vector<AudioParamKey> audioParamKey {
809         NONE,
810         VOLUME,
811         INTERRUPT,
812         PARAM_KEY_STATE,
813         A2DP_SUSPEND_STATE,
814         BT_HEADSET_NREC,
815         BT_WBS,
816         A2DP_OFFLOAD_STATE,
817         GET_DP_DEVICE_INFO,
818         GET_PENCIL_INFO,
819         GET_UWB_INFO,
820         USB_DEVICE,
821         PERF_INFO,
822         MMI,
823         PARAM_KEY_LOWPOWER,
824     };
825     string str = "test";
826     uint32_t id = static_cast<uint32_t>(size) % audioParamKey.size();
827     AudioParamKey key = static_cast<AudioParamKey>(audioParamKey[id]);
828     id = static_cast<uint32_t>(size) % tetsNetworkId.size();
829     CHECK_AND_RETURN(audioServerPtr != nullptr);
830     audioServerPtr->GetAudioParameter(tetsNetworkId[id], key, "", str);
831 }
832 
AudioServerIsFastBlockedTest(const uint8_t * rawData,size_t size)833 void AudioServerIsFastBlockedTest(const uint8_t *rawData, size_t size)
834 {
835     if (rawData == nullptr || size < LIMITSIZE) {
836         return;
837     }
838 
839     vector<PlayerType> gPlayerType = {
840         PLAYER_TYPE_DEFAULT,
841         PLAYER_TYPE_SOUND_POOL,
842         PLAYER_TYPE_AV_PLAYER,
843     };
844 
845     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
846 
847     uint32_t id = static_cast<uint32_t>(size) % gPlayerType.size();
848     audioServerPtr->IsFastBlocked(static_cast<uint32_t>(id), gPlayerType[id]);
849 }
850 
AudioServerCheckRemoteDeviceStateTestTwo(const uint8_t * rawData,size_t size)851 void AudioServerCheckRemoteDeviceStateTestTwo(const uint8_t *rawData, size_t size)
852 {
853     if (rawData == nullptr || size < LIMITSIZE) {
854         return;
855     }
856     vector<DeviceRole> gDeviceRole = {
857         DEVICE_ROLE_NONE,
858         INPUT_DEVICE,
859         OUTPUT_DEVICE,
860         DEVICE_ROLE_MAX,
861     };
862     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
863     bool isStartDevice = static_cast<uint32_t>(size) % NUM_2;
864     uint32_t id = static_cast<uint32_t>(size) % gDeviceRole.size();
865     audioServerPtr->CheckRemoteDeviceState("LocalDevice", gDeviceRole[id], isStartDevice);
866 }
867 
AudioServerCreateAudioStreamTest(const uint8_t * rawData,size_t size)868 void AudioServerCreateAudioStreamTest(const uint8_t *rawData, size_t size)
869 {
870     if (rawData == nullptr || size < LIMITSIZE) {
871         return;
872     }
873 
874     sptr<IRemoteObject> remoteObject = nullptr;
875     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
876     audioServerPtr->NotifyProcessStatus();
877     AudioProcessConfig config;
878     std::shared_ptr<PipeInfoGuard> pipeinfoGuard = std::make_shared<PipeInfoGuard>(0);
879     vector<int32_t> gTestCallingUid = {
880         AudioServer::VASSISTANT_UID,
881         AudioServer::MEDIA_SERVICE_UID,
882     };
883     uint32_t id = static_cast<uint32_t>(size) % gTestCallingUid.size();
884     config.audioMode = AUDIO_MODE_RECORD;
885     remoteObject = audioServerPtr->CreateAudioStream(config, gTestCallingUid[id], pipeinfoGuard);
886     vector<AudioParamKey> audioParamKey {
887         NONE,
888         VOLUME,
889         INTERRUPT,
890         PARAM_KEY_STATE,
891         A2DP_SUSPEND_STATE,
892         BT_HEADSET_NREC,
893         BT_WBS,
894         A2DP_OFFLOAD_STATE,
895         GET_DP_DEVICE_INFO,
896         GET_PENCIL_INFO,
897         GET_UWB_INFO,
898         USB_DEVICE,
899         PERF_INFO,
900         MMI,
901         PARAM_KEY_LOWPOWER,
902     };
903 
904     config.audioMode = static_cast<AudioMode>(-1);
905     audioServerPtr->IsNormalIpcStream(config);
906     id = static_cast<uint32_t>(size) % audioParamKey.size();
907     audioServerPtr->OnRenderSinkParamChange("", audioParamKey[id], "", "");
908     audioServerPtr->OnCaptureSourceParamChange("", audioParamKey[id], "", "");
909     audioServerPtr->OnWakeupClose();
910     id = static_cast<uint32_t>(size) % NUM_2;
911     audioServerPtr->OnCapturerState(static_cast<bool>(id), id, id);
912     audioServerPtr->SetParameterCallback(remoteObject);
913     audioServerPtr->SetWakeupSourceCallback(remoteObject);
914     audioServerPtr->RegiestPolicyProvider(remoteObject);
915     audioServerPtr->RegistCoreServiceProvider(remoteObject);
916 }
917 
AudioServerSetSinkRenderEmptyTest(const uint8_t * rawData,size_t size)918 void AudioServerSetSinkRenderEmptyTest(const uint8_t *rawData, size_t size)
919 {
920     if (rawData == nullptr || size < LIMITSIZE) {
921         return;
922     }
923     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
924 
925     uint32_t id = static_cast<uint32_t>(size) % NUM_2;
926     audioServerPtr->SetSinkRenderEmpty("primary", id);
927 }
928 
AudioServerOnRenderSinkStateChangeTest(const uint8_t * rawData,size_t size)929 void AudioServerOnRenderSinkStateChangeTest(const uint8_t *rawData, size_t size)
930 {
931     if (rawData == nullptr || size < LIMITSIZE) {
932         return;
933     }
934     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
935 
936     uint32_t id = static_cast<uint32_t>(size) % NUM_2;
937     audioServerPtr->OnRenderSinkStateChange(id, static_cast<bool>(id));
938 }
939 
AudioServerCreateHdiSinkPortTest(const uint8_t * rawData,size_t size)940 void AudioServerCreateHdiSinkPortTest(const uint8_t *rawData, size_t size)
941 {
942     if (rawData == nullptr || size < LIMITSIZE) {
943         return;
944     }
945     uint32_t renderId = 0;
946     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
947     IAudioSinkAttr attr;
948     std::string deviceClass = "audio_test_class";
949     std::string idInfo = "audio_indo";
950     CHECK_AND_RETURN(audioServerPtr != nullptr);
951     audioServerPtr->CreateHdiSinkPort(deviceClass, idInfo, attr, renderId);
952 }
953 
AudioServerCreateHdiSourcePortTest(const uint8_t * rawData,size_t size)954 void AudioServerCreateHdiSourcePortTest(const uint8_t *rawData, size_t size)
955 {
956     if (rawData == nullptr || size < LIMITSIZE) {
957         return;
958     }
959 
960     uint32_t captureId = 0;
961     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
962     IAudioSourceAttr attr;
963     std::string deviceClass = "audio_test_class";
964     std::string idInfo = "audio_indo";
965     CHECK_AND_RETURN(audioServerPtr != nullptr);
966     audioServerPtr->CreateHdiSourcePort(deviceClass, idInfo, attr, captureId);
967 }
968 
AudioServerRegisterDataTransferCallbackTest(const uint8_t * rawData,size_t size)969 void AudioServerRegisterDataTransferCallbackTest(const uint8_t *rawData, size_t size)
970 {
971     if (rawData == nullptr || size < LIMITSIZE) {
972         return;
973     }
974 
975     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
976     sptr<AudioPolicyManagerListenerStubImpl> focusListenerStub = new(std::nothrow) AudioPolicyManagerListenerStubImpl();
977     sptr<IRemoteObject> object = focusListenerStub->AsObject();
978 
979     audioServerPtr->RegisterDataTransferCallback(object);
980 }
981 
AudioServerWriteServiceStartupErrorTest(const uint8_t * rawData,size_t size)982 void AudioServerWriteServiceStartupErrorTest(const uint8_t *rawData, size_t size)
983 {
984     if (rawData == nullptr || size < LIMITSIZE) {
985         return;
986     }
987 
988     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
989     audioServerPtr->WriteServiceStartupError();
990 }
991 
AudioServerProcessKeyValuePairsTest(const uint8_t * rawData,size_t size)992 void AudioServerProcessKeyValuePairsTest(const uint8_t *rawData, size_t size)
993 {
994     if (rawData == nullptr || size < LIMITSIZE) {
995         return;
996     }
997     static const vector<string> testPairs = {
998         "unprocess_audio_effect",
999         "test",
1000     };
1001     string key = "test_key";
1002     string value{};
1003     string pairTest = testPairs[static_cast<uint32_t>(size) % testPairs.size()];
1004     std::vector<std::pair<std::string, std::string>> kvpairs;
1005     kvpairs.push_back(make_pair(pairTest, "test_value"));
1006     set<std::string> subKeys = {"effect"};
1007     unordered_map<std::string, std::set<std::string>> subKeyMap;
1008     subKeyMap.insert(make_pair(pairTest, subKeys));
1009 
1010     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1011     audioServerPtr->ProcessKeyValuePairs(key, kvpairs, subKeyMap, value);
1012 }
1013 
AudioServerSetA2dpAudioParameterTest(const uint8_t * rawData,size_t size)1014 void AudioServerSetA2dpAudioParameterTest(const uint8_t *rawData, size_t size)
1015 {
1016     if (rawData == nullptr || size < LIMITSIZE) {
1017         return;
1018     }
1019     string renderValue;
1020 
1021     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1022     audioServerPtr->SetA2dpAudioParameter(renderValue);
1023 }
1024 
AudioServerGetAudioParameterByKeyTest(const uint8_t * rawData,size_t size)1025 void AudioServerGetAudioParameterByKeyTest(const uint8_t *rawData, size_t size)
1026 {
1027     if (rawData == nullptr || size < LIMITSIZE) {
1028         return;
1029     }
1030     static const vector<string> testKeys = {
1031         "AUDIO_EXT_PARAM_KEY_LOWPOWER",
1032         "need_change_usb_device#C",
1033         "getSmartPAPOWER",
1034         "show_RealTime_ChipModel",
1035         "perf_info",
1036     };
1037 
1038     string value = "test";
1039     string key = testKeys[static_cast<uint32_t>(size) % testKeys.size()];
1040     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1041     CHECK_AND_RETURN(audioServerPtr != nullptr);
1042     audioServerPtr->GetAudioParameter(key, value);
1043 }
1044 
AudioServerGetDPParameterTest(const uint8_t * rawData,size_t size)1045 void AudioServerGetDPParameterTest(const uint8_t *rawData, size_t size)
1046 {
1047     if (rawData == nullptr || size < LIMITSIZE) {
1048         return;
1049     }
1050 
1051     std::string condition;
1052     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1053     audioServerPtr->GetDPParameter(condition);
1054 }
1055 
AudioServerSetAudioSceneByDeviceTypeTest(const uint8_t * rawData,size_t size)1056 void AudioServerSetAudioSceneByDeviceTypeTest(const uint8_t *rawData, size_t size)
1057 {
1058     if (rawData == nullptr || size < LIMITSIZE) {
1059         return;
1060     }
1061     uint32_t index = static_cast<uint32_t>(size);
1062     static const vector<AudioScene> testAudioScenes = {
1063         AUDIO_SCENE_INVALID,
1064         AUDIO_SCENE_DEFAULT,
1065         AUDIO_SCENE_RINGING,
1066         AUDIO_SCENE_PHONE_CALL,
1067         AUDIO_SCENE_PHONE_CHAT,
1068         AUDIO_SCENE_CALL_START,
1069         AUDIO_SCENE_CALL_END,
1070         AUDIO_SCENE_VOICE_RINGING,
1071         AUDIO_SCENE_MAX,
1072     };
1073     static const vector<BluetoothOffloadState> testBluetoothOffloadStates = {
1074         NO_A2DP_DEVICE,
1075         A2DP_NOT_OFFLOAD,
1076         A2DP_OFFLOAD,
1077     };
1078     bool scoExcludeFlag = static_cast<bool>(index % NUM_2);
1079     BluetoothOffloadState a2dpOffloadFlag = testBluetoothOffloadStates[index % testBluetoothOffloadStates.size()];
1080     AudioScene audioScene = testAudioScenes[static_cast<uint32_t>(size) % testAudioScenes.size()];
1081     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1082     audioServerPtr->SetAudioScene(audioScene, a2dpOffloadFlag, scoExcludeFlag);
1083 }
1084 
AudioServerNotifyDeviceInfoFuzzTest(const uint8_t * rawData,size_t size)1085 void AudioServerNotifyDeviceInfoFuzzTest(const uint8_t *rawData, size_t size)
1086 {
1087     if (rawData == nullptr || size < LIMITSIZE) {
1088         return;
1089     }
1090 
1091     std::string networkId = "test_network_id";
1092     bool connected = *reinterpret_cast<const bool*>(rawData);
1093     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1094     if (audioServerPtr == nullptr) {
1095         return;
1096     }
1097     audioServerPtr->NotifyDeviceInfo(networkId, connected);
1098 }
1099 
AudioServerSetVoiceVolumeFuzzTest(const uint8_t * rawData,size_t size)1100 void AudioServerSetVoiceVolumeFuzzTest(const uint8_t *rawData, size_t size)
1101 {
1102     if (rawData == nullptr || size < LIMITSIZE) {
1103         return;
1104     }
1105 
1106     float volume = *reinterpret_cast<const float*>(rawData);
1107     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1108     if (audioServerPtr == nullptr) {
1109         return;
1110     }
1111     audioServerPtr->SetVoiceVolume(volume);
1112 }
1113 
AudioServerCheckRemoteDeviceStateFuzzTest(const uint8_t * rawData,size_t size)1114 void AudioServerCheckRemoteDeviceStateFuzzTest(const uint8_t *rawData, size_t size)
1115 {
1116     static const vector<DeviceRole> testDeviceRole = {
1117         DEVICE_ROLE_NONE,
1118         INPUT_DEVICE,
1119         OUTPUT_DEVICE,
1120         DEVICE_ROLE_MAX,
1121     };
1122     if (rawData == nullptr || size < LIMITSIZE || testDeviceRole.size() == 0) {
1123         return;
1124     }
1125 
1126     std::string networkId = "test_network_id";
1127     uint32_t deviceId = *reinterpret_cast<const uint32_t*>(rawData);
1128     DeviceRole deviceRole = testDeviceRole[deviceId % testDeviceRole.size()];
1129     bool isStartDevice = *reinterpret_cast<const bool*>(rawData);
1130     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1131     if (audioServerPtr == nullptr) {
1132         return;
1133     }
1134     audioServerPtr->CheckRemoteDeviceState(networkId, deviceRole, isStartDevice);
1135 }
1136 
AudioServerSetAudioBalanceValueFuzzTest(const uint8_t * rawData,size_t size)1137 void AudioServerSetAudioBalanceValueFuzzTest(const uint8_t *rawData, size_t size)
1138 {
1139     if (rawData == nullptr || size < LIMITSIZE) {
1140         return;
1141     }
1142 
1143     float audioBalance = *reinterpret_cast<const float*>(rawData);
1144     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1145     if (audioServerPtr == nullptr) {
1146         return;
1147     }
1148     audioServerPtr->SetAudioBalanceValue(audioBalance);
1149 }
1150 
AudioServerRemoveRendererDataTransferCallbackFuzzTest(const uint8_t * rawData,size_t size)1151 void AudioServerRemoveRendererDataTransferCallbackFuzzTest(const uint8_t *rawData, size_t size)
1152 {
1153     if (rawData == nullptr || size < LIMITSIZE) {
1154         return;
1155     }
1156     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
1157     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1158     audioServerPtr->RemoveRendererDataTransferCallback(testPid);
1159 }
1160 
AudioServerRegisterDataTransferCallbackFuzzTest(const uint8_t * rawData,size_t size)1161 void AudioServerRegisterDataTransferCallbackFuzzTest(const uint8_t *rawData, size_t size)
1162 {
1163     if (rawData == nullptr || size < LIMITSIZE) {
1164         return;
1165     }
1166     MessageParcel data;
1167     data.WriteInterfaceToken(FORMMGR_INTERFACE_TOKEN);
1168     data.WriteBuffer(rawData, size);
1169     data.RewindRead(0);
1170     sptr<IRemoteObject> object = data.ReadRemoteObject();
1171     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1172     audioServerPtr->RegisterDataTransferCallback(object);
1173 }
1174 
AudioServerRegisterDataTransferMonitorParamFuzzTest(const uint8_t * rawData,size_t size)1175 void AudioServerRegisterDataTransferMonitorParamFuzzTest(const uint8_t *rawData, size_t size)
1176 {
1177     if (rawData == nullptr || size < LIMITSIZE) {
1178         return;
1179     }
1180     int32_t testCallbackId = *reinterpret_cast<const int32_t*>(rawData);
1181     DataTransferMonitorParam param;
1182     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1183     audioServerPtr->RegisterDataTransferMonitorParam(testCallbackId, param);
1184 }
1185 
AudioServerUnregisterDataTransferMonitorParamFuzzTest(const uint8_t * rawData,size_t size)1186 void AudioServerUnregisterDataTransferMonitorParamFuzzTest(const uint8_t *rawData, size_t size)
1187 {
1188     if (rawData == nullptr || size < LIMITSIZE) {
1189         return;
1190     }
1191     int32_t testCallbackId = *reinterpret_cast<const int32_t*>(rawData);
1192     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1193     audioServerPtr->UnregisterDataTransferMonitorParam(testCallbackId);
1194 }
1195 
AudioServerOnDataTransferStateChangeFuzzTest(const uint8_t * rawData,size_t size)1196 void AudioServerOnDataTransferStateChangeFuzzTest(const uint8_t *rawData, size_t size)
1197 {
1198     if (rawData == nullptr || size < LIMITSIZE) {
1199         return;
1200     }
1201     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
1202     int32_t testCallbackId = *reinterpret_cast<const int32_t*>(rawData);
1203     AudioRendererDataTransferStateChangeInfo info;
1204     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1205     audioServerPtr->OnDataTransferStateChange(testPid, testCallbackId, info);
1206 }
1207 
AudioServerOnMuteStateChangeFuzzTest(const uint8_t * rawData,size_t size)1208 void AudioServerOnMuteStateChangeFuzzTest(const uint8_t *rawData, size_t size)
1209 {
1210     if (rawData == nullptr || size < LIMITSIZE) {
1211         return;
1212     }
1213     int32_t testPid = *reinterpret_cast<const int32_t*>(rawData);
1214     int32_t testCallbackId = *reinterpret_cast<const int32_t*>(rawData);
1215     int32_t testUid = *reinterpret_cast<const int32_t*>(rawData);
1216     int32_t testSessionId = *reinterpret_cast<const uint32_t*>(rawData);
1217     bool testIsMuted = *reinterpret_cast<const bool*>(rawData);
1218     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1219     audioServerPtr->OnMuteStateChange(testPid, testCallbackId, testUid, testSessionId, testIsMuted);
1220 }
1221 
AudioServerRegisterDataTransferStateChangeCallbackFuzzTest(const uint8_t * rawData,size_t size)1222 void AudioServerRegisterDataTransferStateChangeCallbackFuzzTest(const uint8_t *rawData, size_t size)
1223 {
1224     if (rawData == nullptr || size < LIMITSIZE) {
1225         return;
1226     }
1227     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1228     audioServerPtr->RegisterDataTransferStateChangeCallback();
1229 }
1230 
AudioServerInitMaxRendererStreamCntPerUidFuzzTest(const uint8_t * rawData,size_t size)1231 void AudioServerInitMaxRendererStreamCntPerUidFuzzTest(const uint8_t *rawData, size_t size)
1232 {
1233     if (rawData == nullptr || size < LIMITSIZE) {
1234         return;
1235     }
1236     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1237     audioServerPtr->InitMaxRendererStreamCntPerUid();
1238 }
1239 
AudioServerSetPcmDumpParameterFuzzTest(const uint8_t * rawData,size_t size)1240 void AudioServerSetPcmDumpParameterFuzzTest(const uint8_t *rawData, size_t size)
1241 {
1242     if (rawData == nullptr || size < LIMITSIZE) {
1243         return;
1244     }
1245     const vector<string> testPairs = {
1246         "OPEN",
1247         "CLOSE",
1248         "UPLOAD",
1249         "test"
1250     };
1251     string pairTest = testPairs[*reinterpret_cast<const uint32_t*>(rawData) % testPairs.size()];
1252     std::vector<std::pair<std::string, std::string>> params;
1253     params.push_back(make_pair(pairTest, "test_value"));
1254     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1255     audioServerPtr->SetPcmDumpParameter(params);
1256 }
1257 
AudioServerSuspendRenderSinkFuzzTest(const uint8_t * rawData,size_t size)1258 void AudioServerSuspendRenderSinkFuzzTest(const uint8_t *rawData, size_t size)
1259 {
1260     if (rawData == nullptr || size < LIMITSIZE) {
1261         return;
1262     }
1263     std::string sinkName = "test_sinkName";
1264     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1265     audioServerPtr->SuspendRenderSink(sinkName);
1266 }
1267 
AudioServerRestoreRenderSinkFuzzTest(const uint8_t * rawData,size_t size)1268 void AudioServerRestoreRenderSinkFuzzTest(const uint8_t *rawData, size_t size)
1269 {
1270     if (rawData == nullptr || size < LIMITSIZE) {
1271         return;
1272     }
1273     std::string sinkName = "test_sinkName";
1274     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1275     audioServerPtr->RestoreRenderSink(sinkName);
1276 }
1277 
AudioServerSetAudioParameterFuzzTest(const uint8_t * rawData,size_t size)1278 void AudioServerSetAudioParameterFuzzTest(const uint8_t *rawData, size_t size)
1279 {
1280     if (rawData == nullptr || size < LIMITSIZE) {
1281         return;
1282     }
1283     std::string networkId = "test_networkId";
1284     int32_t key = *reinterpret_cast<const int32_t*>(rawData);
1285     std::string condition = "test_condition";
1286     std::string value = "test_value";
1287     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1288     audioServerPtr->SetAudioParameter(networkId, key, condition, value);
1289 }
1290 
AudioServerGetTransactionIdFuzzTest(const uint8_t * rawData,size_t size)1291 void AudioServerGetTransactionIdFuzzTest(const uint8_t *rawData, size_t size)
1292 {
1293     if (rawData == nullptr || size < LIMITSIZE) {
1294         return;
1295     }
1296     const vector<DeviceRole> g_deviceRole = {
1297         DEVICE_ROLE_NONE,
1298         INPUT_DEVICE,
1299         OUTPUT_DEVICE,
1300         DEVICE_ROLE_MAX
1301     };
1302     DeviceType deviceType = g_testDeviceTypes[*reinterpret_cast<const uint32_t*>(rawData) % g_testDeviceTypes.size()];
1303     DeviceRole deviceRole = g_deviceRole[*reinterpret_cast<const uint32_t*>(rawData) % g_deviceRole.size()];
1304     uint64_t transactionId = *reinterpret_cast<const uint64_t*>(rawData);
1305     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1306     audioServerPtr->GetTransactionId(deviceType, deviceRole, transactionId);
1307 }
1308 
AudioServerSetIORoutesFuzzTest(const uint8_t * rawData,size_t size)1309 void AudioServerSetIORoutesFuzzTest(const uint8_t *rawData, size_t size)
1310 {
1311     if (rawData == nullptr || size < LIMITSIZE) {
1312         return;
1313     }
1314     uint32_t deviceTypeCount = static_cast<uint32_t>(size) % g_testDeviceTypes.size();
1315     DeviceType deviceType = g_testDeviceTypes[deviceTypeCount];
1316     uint32_t deviceFlagCount = static_cast<uint32_t>(size) % g_testDeviceFlags.size();
1317     DeviceFlag deviceFlag = g_testDeviceFlags[deviceFlagCount];
1318     std::vector<std::pair<DeviceType, DeviceFlag>> activeDevices;
1319     std::pair<DeviceType, DeviceFlag> activeDevice = std::make_pair(deviceType, deviceFlag);
1320     activeDevices.push_back(activeDevice);
1321     uint32_t index = static_cast<uint32_t>(size);
1322     static const vector<BluetoothOffloadState> testBluetoothOffloadStates = {
1323         NO_A2DP_DEVICE,
1324         A2DP_NOT_OFFLOAD,
1325         A2DP_OFFLOAD
1326     };
1327     BluetoothOffloadState a2dpOffloadFlag = testBluetoothOffloadStates[index % testBluetoothOffloadStates.size()];
1328     std::string deviceName = "test_deviceName";
1329     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1330     audioServerPtr->SetIORoutes(activeDevices, a2dpOffloadFlag, deviceName);
1331     std::vector<DeviceType> deviceTypes = {deviceType};
1332     audioServerPtr->SetIORoutes(deviceType, deviceFlag, deviceTypes, a2dpOffloadFlag, deviceName);
1333 }
1334 
AudioServerUpdateActiveDeviceRouteFuzzTest(const uint8_t * rawData,size_t size)1335 void AudioServerUpdateActiveDeviceRouteFuzzTest(const uint8_t *rawData, size_t size)
1336 {
1337     if (rawData == nullptr || size < LIMITSIZE) {
1338         return;
1339     }
1340     int32_t type = *reinterpret_cast<const int32_t*>(rawData);
1341     int32_t flag = *reinterpret_cast<const int32_t*>(rawData);
1342     int32_t a2dpOffloadFlag = *reinterpret_cast<const int32_t*>(rawData);
1343     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1344     audioServerPtr->UpdateActiveDeviceRoute(type, flag, a2dpOffloadFlag);
1345 }
1346 
AudioServerUpdateActiveDevicesRouteFuzzTest(const uint8_t * rawData,size_t size)1347 void AudioServerUpdateActiveDevicesRouteFuzzTest(const uint8_t *rawData, size_t size)
1348 {
1349     if (rawData == nullptr || size < LIMITSIZE) {
1350         return;
1351     }
1352     std::vector<IntPair> activeDevices;
1353     int32_t a2dpOffloadFlag = *reinterpret_cast<const int32_t*>(rawData);
1354     std::string deviceName = "test_deviceName";
1355     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1356     audioServerPtr->UpdateActiveDevicesRoute(activeDevices, a2dpOffloadFlag, deviceName);
1357 }
1358 
AudioServerSetDmDeviceTypeFuzzTest(const uint8_t * rawData,size_t size)1359 void AudioServerSetDmDeviceTypeFuzzTest(const uint8_t *rawData, size_t size)
1360 {
1361     if (rawData == nullptr || size < LIMITSIZE) {
1362         return;
1363     }
1364     uint16_t dmDeviceType = *reinterpret_cast<const uint16_t*>(rawData);
1365     int32_t deviceTypeIn = *reinterpret_cast<const int32_t*>(rawData);
1366     std::vector<IntPair> activeDevices;
1367     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1368     audioServerPtr->SetDmDeviceType(dmDeviceType, deviceTypeIn);
1369 }
1370 
AudioServerSetAudioMonoStateFuzzTest(const uint8_t * rawData,size_t size)1371 void AudioServerSetAudioMonoStateFuzzTest(const uint8_t *rawData, size_t size)
1372 {
1373     if (rawData == nullptr || size < LIMITSIZE) {
1374         return;
1375     }
1376     bool audioMono = *reinterpret_cast<const bool*>(rawData);
1377     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1378     audioServerPtr->SetAudioMonoState(audioMono);
1379 }
1380 
AudioServerGetHapBuildApiVersionFuzzTest(const uint8_t * rawData,size_t size)1381 void AudioServerGetHapBuildApiVersionFuzzTest(const uint8_t *rawData, size_t size)
1382 {
1383     if (rawData == nullptr || size < LIMITSIZE) {
1384         return;
1385     }
1386     int32_t callerUid = *reinterpret_cast<const int32_t*>(rawData);
1387     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1388     audioServerPtr->GetHapBuildApiVersion(callerUid);
1389 }
1390 
AudioServerResetRecordConfigFuzzTest(const uint8_t * rawData,size_t size)1391 void AudioServerResetRecordConfigFuzzTest(const uint8_t *rawData, size_t size)
1392 {
1393     if (rawData == nullptr || size < LIMITSIZE) {
1394         return;
1395     }
1396     AudioProcessConfig config;
1397     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1398     audioServerPtr->ResetRecordConfig(config);
1399 }
1400 
AudioServerResetProcessConfigFuzzTest(const uint8_t * rawData,size_t size)1401 void AudioServerResetProcessConfigFuzzTest(const uint8_t *rawData, size_t size)
1402 {
1403     if (rawData == nullptr || size < LIMITSIZE) {
1404         return;
1405     }
1406     AudioProcessConfig config;
1407     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1408     audioServerPtr->ResetProcessConfig(config);
1409 }
1410 
AudioServerCheckStreamInfoFormatFuzzTest(const uint8_t * rawData,size_t size)1411 void AudioServerCheckStreamInfoFormatFuzzTest(const uint8_t *rawData, size_t size)
1412 {
1413     if (rawData == nullptr || size < LIMITSIZE) {
1414         return;
1415     }
1416     AudioProcessConfig config;
1417     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1418     audioServerPtr->CheckStreamInfoFormat(config);
1419 }
1420 
AudioServerCheckRendererFormatFuzzTest(const uint8_t * rawData,size_t size)1421 void AudioServerCheckRendererFormatFuzzTest(const uint8_t *rawData, size_t size)
1422 {
1423     if (rawData == nullptr || size < LIMITSIZE) {
1424         return;
1425     }
1426     AudioProcessConfig config;
1427     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1428     audioServerPtr->CheckRendererFormat(config);
1429 }
1430 
AudioServerCheckRecorderFormatFuzzTest(const uint8_t * rawData,size_t size)1431 void AudioServerCheckRecorderFormatFuzzTest(const uint8_t *rawData, size_t size)
1432 {
1433     if (rawData == nullptr || size < LIMITSIZE) {
1434         return;
1435     }
1436     AudioProcessConfig config;
1437     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1438     audioServerPtr->CheckRecorderFormat(config);
1439 }
1440 
AudioServerCheckConfigFormatFuzzTest(const uint8_t * rawData,size_t size)1441 void AudioServerCheckConfigFormatFuzzTest(const uint8_t *rawData, size_t size)
1442 {
1443     if (rawData == nullptr || size < LIMITSIZE) {
1444         return;
1445     }
1446     AudioProcessConfig config;
1447     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1448     audioServerPtr->CheckConfigFormat(config);
1449 }
1450 
AudioServerSendCreateErrorInfoFuzzTest(const uint8_t * rawData,size_t size)1451 void AudioServerSendCreateErrorInfoFuzzTest(const uint8_t *rawData, size_t size)
1452 {
1453     if (rawData == nullptr || size < LIMITSIZE) {
1454         return;
1455     }
1456     AudioProcessConfig config;
1457     int32_t errorCode = *reinterpret_cast<const int32_t*>(rawData);
1458     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1459     audioServerPtr->SendCreateErrorInfo(config, errorCode);
1460 }
1461 
AudioServerCheckMaxRendererInstancesFuzzTest(const uint8_t * rawData,size_t size)1462 void AudioServerCheckMaxRendererInstancesFuzzTest(const uint8_t *rawData, size_t size)
1463 {
1464     if (rawData == nullptr || size < LIMITSIZE) {
1465         return;
1466     }
1467     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1468     audioServerPtr->CheckMaxRendererInstances();
1469 }
1470 
AudioServerCheckMaxLoopbackInstancesFuzzTest(const uint8_t * rawData,size_t size)1471 void AudioServerCheckMaxLoopbackInstancesFuzzTest(const uint8_t *rawData, size_t size)
1472 {
1473     if (rawData == nullptr || size < LIMITSIZE) {
1474         return;
1475     }
1476     int32_t modeCount = static_cast<int32_t>(AudioMode::AUDIO_MODE_RECORD) + 1;
1477     uint8_t index = *reinterpret_cast<const uint8_t*>(rawData);
1478     AudioMode audioMode = static_cast<AudioMode>(index % modeCount);
1479     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1480     audioServerPtr->CheckMaxLoopbackInstances(audioMode);
1481 }
1482 
AudioServerCheckAndWaitAudioPolicyReadyFuzzTest(const uint8_t * rawData,size_t size)1483 void AudioServerCheckAndWaitAudioPolicyReadyFuzzTest(const uint8_t *rawData, size_t size)
1484 {
1485     if (rawData == nullptr || size < LIMITSIZE) {
1486         return;
1487     }
1488     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1489     audioServerPtr->CheckAndWaitAudioPolicyReady();
1490 }
1491 
AudioServerIsSatelliteFuzzTest(const uint8_t * rawData,size_t size)1492 void AudioServerIsSatelliteFuzzTest(const uint8_t *rawData, size_t size)
1493 {
1494     if (rawData == nullptr || size < LIMITSIZE) {
1495         return;
1496     }
1497     AudioProcessConfig config;
1498     int32_t callingUid = *reinterpret_cast<const int32_t*>(rawData);
1499     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1500     audioServerPtr->IsSatellite(config, callingUid);
1501 }
1502 
AudioServerCreateAudioProcessFuzzTest(const uint8_t * rawData,size_t size)1503 void AudioServerCreateAudioProcessFuzzTest(const uint8_t *rawData, size_t size)
1504 {
1505     if (rawData == nullptr || size < LIMITSIZE) {
1506         return;
1507     }
1508     sptr<IRemoteObject> client = nullptr;
1509     AudioProcessConfig config;
1510     AudioPlaybackCaptureConfig filterConfig = AudioPlaybackCaptureConfig();
1511     int32_t errorCode = *reinterpret_cast<const int32_t*>(rawData);
1512     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1513     audioServerPtr->CreateAudioProcess(config, errorCode, filterConfig, client);
1514 }
1515 
AudioServerCreateAudioProcessInnerFuzzTest(const uint8_t * rawData,size_t size)1516 void AudioServerCreateAudioProcessInnerFuzzTest(const uint8_t *rawData, size_t size)
1517 {
1518     if (rawData == nullptr || size < LIMITSIZE) {
1519         return;
1520     }
1521     AudioProcessConfig config;
1522     AudioPlaybackCaptureConfig filterConfig = AudioPlaybackCaptureConfig();
1523     int32_t errorCode = *reinterpret_cast<const int32_t*>(rawData);
1524     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1525     audioServerPtr->CreateAudioProcessInner(config, errorCode, filterConfig);
1526 }
1527 
AudioServerPermissionCheckerFuzzTest(const uint8_t * rawData,size_t size)1528 void AudioServerPermissionCheckerFuzzTest(const uint8_t *rawData, size_t size)
1529 {
1530     if (rawData == nullptr || size < LIMITSIZE) {
1531         return;
1532     }
1533     AudioProcessConfig config;
1534     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1535     audioServerPtr->PermissionChecker(config);
1536 }
1537 
AudioServerCheckPlaybackPermissionFuzzTest(const uint8_t * rawData,size_t size)1538 void AudioServerCheckPlaybackPermissionFuzzTest(const uint8_t *rawData, size_t size)
1539 {
1540     if (rawData == nullptr || size < LIMITSIZE) {
1541         return;
1542     }
1543     AudioProcessConfig config;
1544     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1545     audioServerPtr->CheckPlaybackPermission(config);
1546 }
1547 
AudioServerCheckInnerRecorderPermissionFuzzTest(const uint8_t * rawData,size_t size)1548 void AudioServerCheckInnerRecorderPermissionFuzzTest(const uint8_t *rawData, size_t size)
1549 {
1550     if (rawData == nullptr || size < LIMITSIZE) {
1551         return;
1552     }
1553     AudioProcessConfig config;
1554     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1555     audioServerPtr->CheckInnerRecorderPermission(config);
1556 }
1557 
AudioServerHandleCheckRecorderBackgroundCaptureFuzzTest(const uint8_t * rawData,size_t size)1558 void AudioServerHandleCheckRecorderBackgroundCaptureFuzzTest(const uint8_t *rawData, size_t size)
1559 {
1560     if (rawData == nullptr || size < LIMITSIZE) {
1561         return;
1562     }
1563     AudioProcessConfig config;
1564     config.callerUid = g_fuzzUtils.GetData<int32_t>();
1565     config.capturerInfo.sourceType = g_fuzzUtils.GetData<SourceType>();
1566     config.appInfo.appTokenId = g_fuzzUtils.GetData<uint32_t>();
1567     config.appInfo.appFullTokenId = g_fuzzUtils.GetData<uint64_t>();
1568     config.originalSessionId = g_fuzzUtils.GetData<uint32_t>();
1569     config.appInfo.appUid = g_fuzzUtils.GetData<int32_t>();
1570     config.appInfo.appPid = g_fuzzUtils.GetData<int32_t>();
1571 
1572     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1573     audioServerPtr->HandleCheckRecorderBackgroundCapture(config);
1574 }
1575 
AudioServerSetForegroundListFuzzTest(const uint8_t * rawData,size_t size)1576 void AudioServerSetForegroundListFuzzTest(const uint8_t *rawData, size_t size)
1577 {
1578     if (rawData == nullptr || size < LIMITSIZE) {
1579         return;
1580     }
1581     std::vector<std::string> list = {"test_list"};
1582     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1583     audioServerPtr->SetForegroundList(list);
1584 }
1585 
AudioServerCreatePlaybackCapturerManagerFuzzTest(const uint8_t * rawData,size_t size)1586 void AudioServerCreatePlaybackCapturerManagerFuzzTest(const uint8_t *rawData, size_t size)
1587 {
1588     if (rawData == nullptr || size < LIMITSIZE) {
1589         return;
1590     }
1591     bool isSuccess = *reinterpret_cast<const bool*>(rawData);
1592     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1593     audioServerPtr->CreatePlaybackCapturerManager(isSuccess);
1594 }
1595 
AudioServerRegisterAudioCapturerSourceCallbackFuzzTest(const uint8_t * rawData,size_t size)1596 void AudioServerRegisterAudioCapturerSourceCallbackFuzzTest(const uint8_t *rawData, size_t size)
1597 {
1598     if (rawData == nullptr || size < LIMITSIZE) {
1599         return;
1600     }
1601     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1602     audioServerPtr->RegisterAudioCapturerSourceCallback();
1603 }
1604 
AudioServerRegisterAudioRendererSinkCallbackFuzzTest(const uint8_t * rawData,size_t size)1605 void AudioServerRegisterAudioRendererSinkCallbackFuzzTest(const uint8_t *rawData, size_t size)
1606 {
1607     if (rawData == nullptr || size < LIMITSIZE) {
1608         return;
1609     }
1610     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1611     audioServerPtr->RegisterAudioRendererSinkCallback();
1612 }
1613 
AudioServerGetMaxAmplitudeFuzzTest(const uint8_t * rawData,size_t size)1614 void AudioServerGetMaxAmplitudeFuzzTest(const uint8_t *rawData, size_t size)
1615 {
1616     if (rawData == nullptr || size < LIMITSIZE) {
1617         return;
1618     }
1619     bool isOutputDevice = *reinterpret_cast<const bool*>(rawData);
1620     std::string deviceClass = "test_deviceClass";
1621     float maxAmplitude = *reinterpret_cast<const float*>(rawData);
1622     int32_t sourceType = *reinterpret_cast<const int32_t*>(rawData);
1623     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1624     audioServerPtr->GetMaxAmplitude(isOutputDevice, deviceClass, sourceType, maxAmplitude);
1625 }
1626 
AudioServerGetVolumeDataCountFuzzTest(const uint8_t * rawData,size_t size)1627 void AudioServerGetVolumeDataCountFuzzTest(const uint8_t *rawData, size_t size)
1628 {
1629     if (rawData == nullptr || size < LIMITSIZE) {
1630         return;
1631     }
1632     std::string sinkName = "test_sinkName";
1633     int64_t volumeData = *reinterpret_cast<const int64_t*>(rawData);
1634     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1635     audioServerPtr->GetVolumeDataCount(sinkName, volumeData);
1636 }
1637 
AudioServerUpdateLatencyTimestampFuzzTest(const uint8_t * rawData,size_t size)1638 void AudioServerUpdateLatencyTimestampFuzzTest(const uint8_t *rawData, size_t size)
1639 {
1640     if (rawData == nullptr || size < LIMITSIZE) {
1641         return;
1642     }
1643     std::string timestamp(reinterpret_cast<const char*>(rawData), size - 1);
1644     bool isRenderer = *reinterpret_cast<const bool*>(rawData);
1645     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1646     audioServerPtr->UpdateLatencyTimestamp(timestamp, isRenderer);
1647 }
1648 
AudioServerCheckHibernateStateFuzzTest(const uint8_t * rawData,size_t size)1649 void AudioServerCheckHibernateStateFuzzTest(const uint8_t *rawData, size_t size)
1650 {
1651     if (rawData == nullptr || size < LIMITSIZE) {
1652         return;
1653     }
1654     bool hibernate = *reinterpret_cast<const bool*>(rawData);
1655     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1656     audioServerPtr->CheckHibernateState(hibernate);
1657 }
1658 
AudioServerCreateIpcOfflineStreamFuzzTest(const uint8_t * rawData,size_t size)1659 void AudioServerCreateIpcOfflineStreamFuzzTest(const uint8_t *rawData, size_t size)
1660 {
1661     if (rawData == nullptr || size < LIMITSIZE) {
1662         return;
1663     }
1664     int32_t errorCode = *reinterpret_cast<const int32_t*>(rawData);
1665     sptr<IRemoteObject> client = nullptr;
1666     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1667     audioServerPtr->CreateIpcOfflineStream(errorCode, client);
1668 }
1669 
AudioServerGetOfflineAudioEffectChainsFuzzTest(const uint8_t * rawData,size_t size)1670 void AudioServerGetOfflineAudioEffectChainsFuzzTest(const uint8_t *rawData, size_t size)
1671 {
1672     if (rawData == nullptr || size < LIMITSIZE) {
1673         return;
1674     }
1675     std::vector<std::string> effectChains = {"test_effectChains"};
1676     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1677     audioServerPtr->GetOfflineAudioEffectChains(effectChains);
1678 }
1679 
AudioServerGetStandbyStatusFuzzTest(const uint8_t * rawData,size_t size)1680 void AudioServerGetStandbyStatusFuzzTest(const uint8_t *rawData, size_t size)
1681 {
1682     if (rawData == nullptr || size < LIMITSIZE) {
1683         return;
1684     }
1685     uint32_t sessionId = *reinterpret_cast<const uint32_t*>(rawData);
1686     bool isStandby = *reinterpret_cast<const bool*>(rawData);
1687     int64_t enterStandbyTime = *reinterpret_cast<const int64_t*>(rawData);
1688     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1689     audioServerPtr->GetStandbyStatus(sessionId, isStandby, enterStandbyTime);
1690 }
1691 
AudioServerGenerateSessionIdFuzzTest(const uint8_t * rawData,size_t size)1692 void AudioServerGenerateSessionIdFuzzTest(const uint8_t *rawData, size_t size)
1693 {
1694     if (rawData == nullptr || size < LIMITSIZE) {
1695         return;
1696     }
1697     uint32_t sessionId = *reinterpret_cast<const uint32_t*>(rawData);
1698     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1699     audioServerPtr->GenerateSessionId(sessionId);
1700 }
1701 
AudioServerNotifyAudioPolicyReadyFuzzTest(const uint8_t * rawData,size_t size)1702 void AudioServerNotifyAudioPolicyReadyFuzzTest(const uint8_t *rawData, size_t size)
1703 {
1704     if (rawData == nullptr || size < LIMITSIZE) {
1705         return;
1706     }
1707     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1708     audioServerPtr->NotifyAudioPolicyReady();
1709 }
1710 
AudioServerGetAllSinkInputsFuzzTest(const uint8_t * rawData,size_t size)1711 void AudioServerGetAllSinkInputsFuzzTest(const uint8_t *rawData, size_t size)
1712 {
1713     if (rawData == nullptr || size < LIMITSIZE) {
1714         return;
1715     }
1716     std::vector<SinkInput> sinkInputs;
1717     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1718     audioServerPtr->GetAllSinkInputs(sinkInputs);
1719 }
1720 
AudioServerReleaseCaptureLimitFuzzTest(const uint8_t * rawData,size_t size)1721 void AudioServerReleaseCaptureLimitFuzzTest(const uint8_t *rawData, size_t size)
1722 {
1723     if (rawData == nullptr || size < LIMITSIZE) {
1724         return;
1725     }
1726     int32_t innerCapId = *reinterpret_cast<const int32_t*>(rawData);
1727     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1728     audioServerPtr->ReleaseCaptureLimit(innerCapId);
1729 }
1730 
AudioServerLoadHdiAdapterFuzzTest(const uint8_t * rawData,size_t size)1731 void AudioServerLoadHdiAdapterFuzzTest(const uint8_t *rawData, size_t size)
1732 {
1733     if (rawData == nullptr || size < LIMITSIZE) {
1734         return;
1735     }
1736     uint32_t devMgrType = *reinterpret_cast<const uint32_t*>(rawData);
1737     std::string adapterName = "test_adapterName";
1738     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1739     audioServerPtr->LoadHdiAdapter(devMgrType, adapterName);
1740 }
1741 
AudioServerUnloadHdiAdapterFuzzTest(const uint8_t * rawData,size_t size)1742 void AudioServerUnloadHdiAdapterFuzzTest(const uint8_t *rawData, size_t size)
1743 {
1744     if (rawData == nullptr || size < LIMITSIZE) {
1745         return;
1746     }
1747     uint32_t devMgrType = *reinterpret_cast<const uint32_t*>(rawData);
1748     std::string adapterName = "test_adapterName";
1749     bool force = *reinterpret_cast<const bool*>(rawData);
1750     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1751     audioServerPtr->UnloadHdiAdapter(devMgrType, adapterName, force);
1752 }
1753 
AudioServerCreateSinkPortFuzzTest(const uint8_t * rawData,size_t size)1754 void AudioServerCreateSinkPortFuzzTest(const uint8_t *rawData, size_t size)
1755 {
1756     if (rawData == nullptr || size < LIMITSIZE) {
1757         return;
1758     }
1759     uint32_t idBase = *reinterpret_cast<const uint32_t*>(rawData);
1760     uint32_t idType = *reinterpret_cast<const uint32_t*>(rawData);
1761     std::string idInfo = "test_idInfo";
1762     IAudioSinkAttr attr;
1763     uint32_t renderId = *reinterpret_cast<const uint32_t*>(rawData);
1764     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1765     audioServerPtr->CreateSinkPort(idBase, idType, idInfo, attr, renderId);
1766 }
1767 
AudioServerCreateSourcePortFuzzTest(const uint8_t * rawData,size_t size)1768 void AudioServerCreateSourcePortFuzzTest(const uint8_t *rawData, size_t size)
1769 {
1770     if (rawData == nullptr || size < LIMITSIZE) {
1771         return;
1772     }
1773     uint32_t idBase = *reinterpret_cast<const uint32_t*>(rawData);
1774     uint32_t idType = *reinterpret_cast<const uint32_t*>(rawData);
1775     std::string idInfo = "test_idInfo";
1776     IAudioSourceAttr attr;
1777     uint32_t captureId = *reinterpret_cast<const uint32_t*>(rawData);
1778     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1779     audioServerPtr->CreateSourcePort(idBase, idType, idInfo, attr, captureId);
1780 }
1781 
AudioServerDestroyHdiPortFuzzTest(const uint8_t * rawData,size_t size)1782 void AudioServerDestroyHdiPortFuzzTest(const uint8_t *rawData, size_t size)
1783 {
1784     if (rawData == nullptr || size < LIMITSIZE) {
1785         return;
1786     }
1787     uint32_t id = *reinterpret_cast<const uint32_t*>(rawData);
1788     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1789     audioServerPtr->DestroyHdiPort(id);
1790 }
1791 
AudioServerSetDeviceConnectedFlagFuzzTest(const uint8_t * rawData,size_t size)1792 void AudioServerSetDeviceConnectedFlagFuzzTest(const uint8_t *rawData, size_t size)
1793 {
1794     if (rawData == nullptr || size < LIMITSIZE) {
1795         return;
1796     }
1797     bool flag = *reinterpret_cast<const bool*>(rawData);
1798     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1799     audioServerPtr->SetDeviceConnectedFlag(flag);
1800 }
1801 
AudioServerSetBtHdiInvalidStateFuzzTest(const uint8_t * rawData,size_t size)1802 void AudioServerSetBtHdiInvalidStateFuzzTest(const uint8_t *rawData, size_t size)
1803 {
1804     if (rawData == nullptr || size < LIMITSIZE) {
1805         return;
1806     }
1807     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1808     audioServerPtr->SetBtHdiInvalidState();
1809 }
1810 
AudioServerCreateAudioWorkgroupFuzzTest(const uint8_t * rawData,size_t size)1811 void AudioServerCreateAudioWorkgroupFuzzTest(const uint8_t *rawData, size_t size)
1812 {
1813     if (rawData == nullptr || size < LIMITSIZE) {
1814         return;
1815     }
1816     int32_t pid = *reinterpret_cast<const int32_t*>(rawData);
1817     sptr<IRemoteObject> object = nullptr;
1818     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
1819     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1820     audioServerPtr->CreateAudioWorkgroup(pid, object, workgroupId);
1821 }
1822 
AudioServerReleaseAudioWorkgroupFuzzTest(const uint8_t * rawData,size_t size)1823 void AudioServerReleaseAudioWorkgroupFuzzTest(const uint8_t *rawData, size_t size)
1824 {
1825     if (rawData == nullptr || size < LIMITSIZE) {
1826         return;
1827     }
1828     int32_t pid = *reinterpret_cast<const int32_t*>(rawData);
1829     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
1830     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1831     audioServerPtr->ReleaseAudioWorkgroup(pid, workgroupId);
1832 }
1833 
AudioServerAddThreadToGroupFuzzTest(const uint8_t * rawData,size_t size)1834 void AudioServerAddThreadToGroupFuzzTest(const uint8_t *rawData, size_t size)
1835 {
1836     if (rawData == nullptr || size < LIMITSIZE) {
1837         return;
1838     }
1839     int32_t pid = *reinterpret_cast<const int32_t*>(rawData);
1840     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
1841     int32_t tokenId = *reinterpret_cast<const int32_t*>(rawData);
1842     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1843     audioServerPtr->AddThreadToGroup(pid, workgroupId, tokenId);
1844 }
1845 
AudioServerForceStopAudioStreamFuzzTest(const uint8_t * rawData,size_t size)1846 void AudioServerForceStopAudioStreamFuzzTest(const uint8_t *rawData, size_t size)
1847 {
1848     if (rawData == nullptr || size < LIMITSIZE) {
1849         return;
1850     }
1851     int32_t audioType = *reinterpret_cast<const int32_t*>(rawData);
1852     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1853     audioServerPtr->ForceStopAudioStream(audioType);
1854 }
1855 
AudioServerStartGroupFuzzTest(const uint8_t * rawData,size_t size)1856 void AudioServerStartGroupFuzzTest(const uint8_t *rawData, size_t size)
1857 {
1858     if (rawData == nullptr || size < LIMITSIZE) {
1859         return;
1860     }
1861     int32_t pid = *reinterpret_cast<const int32_t*>(rawData);
1862     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
1863     uint64_t startTime = *reinterpret_cast<const uint64_t*>(rawData);
1864     uint64_t deadlineTime = *reinterpret_cast<const uint64_t*>(rawData);
1865     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1866     audioServerPtr->StartGroup(pid, workgroupId, startTime, deadlineTime);
1867 }
1868 
AudioServerStopGroupFuzzTest(const uint8_t * rawData,size_t size)1869 void AudioServerStopGroupFuzzTest(const uint8_t *rawData, size_t size)
1870 {
1871     if (rawData == nullptr || size < LIMITSIZE) {
1872         return;
1873     }
1874     int32_t pid = *reinterpret_cast<const int32_t*>(rawData);
1875     int32_t workgroupId = *reinterpret_cast<const int32_t*>(rawData);
1876     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1877     audioServerPtr->StopGroup(pid, workgroupId);
1878 }
1879 
AudioServerSetActiveOutputDeviceFuzzTest(const uint8_t * rawData,size_t size)1880 void AudioServerSetActiveOutputDeviceFuzzTest(const uint8_t *rawData, size_t size)
1881 {
1882     if (rawData == nullptr || size < LIMITSIZE) {
1883         return;
1884     }
1885     int32_t deviceTypeId = *reinterpret_cast<const int32_t*>(rawData) % g_testDeviceTypes.size();
1886     int32_t deviceType = g_testDeviceTypes[deviceTypeId];
1887     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1888     audioServerPtr->SetActiveOutputDevice(deviceType);
1889 }
AudioServerResetRecordConfigSourceTypeFuzzTest(const uint8_t * rawData,size_t size)1890 void AudioServerResetRecordConfigSourceTypeFuzzTest(const uint8_t *rawData, size_t size)
1891 {
1892     if (rawData == nullptr || size < LIMITSIZE) {
1893         return;
1894     }
1895     AudioProcessConfig config;
1896     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1897     CHECK_AND_RETURN(audioServerPtr != nullptr);
1898     config.capturerInfo.sourceType = g_fuzzUtils.GetData<SourceType>();
1899     audioServerPtr->ResetRecordConfig(config);
1900 }
1901 
AudioServerResetProcessConfigCallerUidFuzzTest(const uint8_t * rawData,size_t size)1902 void AudioServerResetProcessConfigCallerUidFuzzTest(const uint8_t *rawData, size_t size)
1903 {
1904     if (rawData == nullptr || size < LIMITSIZE) {
1905         return;
1906     }
1907     AudioProcessConfig config;
1908     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1909     CHECK_AND_RETURN(audioServerPtr != nullptr);
1910     config.callerUid = g_fuzzUtils.GetData<int32_t>();
1911     audioServerPtr->ResetProcessConfig(config);
1912 }
1913 
AudioServerCheckStreamInfoFormatNotContainFuzzTest(const uint8_t * rawData,size_t size)1914 void AudioServerCheckStreamInfoFormatNotContainFuzzTest(const uint8_t *rawData, size_t size)
1915 {
1916     if (rawData == nullptr || size < LIMITSIZE) {
1917         return;
1918     }
1919     AudioProcessConfig config;
1920     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1921     CHECK_AND_RETURN(audioServerPtr != nullptr);
1922     config.streamInfo.format = g_fuzzUtils.GetData<AudioSampleFormat>();
1923     config.streamInfo.encoding = g_fuzzUtils.GetData<AudioEncodingType>();
1924     config.audioMode = g_fuzzUtils.GetData<AudioMode>();
1925     config.streamInfo.channels = g_fuzzUtils.GetData<AudioChannel>();
1926     audioServerPtr->CheckStreamInfoFormat(config);
1927 }
1928 
AudioServerCheckRendererFormatNotContainFuzzTest(const uint8_t * rawData,size_t size)1929 void AudioServerCheckRendererFormatNotContainFuzzTest(const uint8_t *rawData, size_t size)
1930 {
1931     if (rawData == nullptr || size < LIMITSIZE) {
1932         return;
1933     }
1934     AudioProcessConfig config;
1935     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1936     CHECK_AND_RETURN(audioServerPtr != nullptr);
1937     config.rendererInfo.streamUsage = g_fuzzUtils.GetData<StreamUsage>();
1938     audioServerPtr->CheckRendererFormat(config);
1939 }
1940 
AudioServerCheckRecorderFormatNotContainFuzzTest(const uint8_t * rawData,size_t size)1941 void AudioServerCheckRecorderFormatNotContainFuzzTest(const uint8_t *rawData, size_t size)
1942 {
1943     if (rawData == nullptr || size < LIMITSIZE) {
1944         return;
1945     }
1946     AudioProcessConfig config;
1947     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1948     CHECK_AND_RETURN(audioServerPtr != nullptr);
1949     config.capturerInfo.sourceType = g_fuzzUtils.GetData<SourceType>();
1950     config.capturerInfo.capturerFlags = g_fuzzUtils.GetData<int32_t>();
1951     audioServerPtr->CheckRecorderFormat(config);
1952 }
1953 
AudioServerCreateAudioProcessInnerAudioModeFuzzTest(const uint8_t * rawData,size_t size)1954 void AudioServerCreateAudioProcessInnerAudioModeFuzzTest(const uint8_t *rawData, size_t size)
1955 {
1956     if (rawData == nullptr || size < LIMITSIZE) {
1957         return;
1958     }
1959     AudioProcessConfig config;
1960     AudioPlaybackCaptureConfig filterConfig = AudioPlaybackCaptureConfig();
1961     int32_t errorCode = g_fuzzUtils.GetData<int32_t>();
1962     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1963     CHECK_AND_RETURN(audioServerPtr != nullptr);
1964     config.audioMode = g_fuzzUtils.GetData<AudioMode>();
1965     config.rendererInfo.streamUsage = g_fuzzUtils.GetData<StreamUsage>();
1966     audioServerPtr->CreateAudioProcessInner(config, errorCode, filterConfig);
1967 }
1968 
1969 #ifdef HAS_FEATURE_INNERCAPTURER
AudioServerHandleCheckCaptureLimitFuzzTest(const uint8_t * rawData,size_t size)1970 void AudioServerHandleCheckCaptureLimitFuzzTest(const uint8_t *rawData, size_t size)
1971 {
1972     if (rawData == nullptr || size < LIMITSIZE) {
1973         return;
1974     }
1975     AudioProcessConfig config;
1976     AudioPlaybackCaptureConfig filterConfig = AudioPlaybackCaptureConfig();
1977     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1978     CHECK_AND_RETURN(audioServerPtr != nullptr);
1979     config.capturerInfo.sourceType = g_fuzzUtils.GetData<SourceType>();
1980     audioServerPtr->HandleCheckCaptureLimit(config, filterConfig);
1981 }
1982 
AudioServerInnerCheckCaptureLimitFuzzTest(const uint8_t * rawData,size_t size)1983 void AudioServerInnerCheckCaptureLimitFuzzTest(const uint8_t *rawData, size_t size)
1984 {
1985     if (rawData == nullptr || size < LIMITSIZE) {
1986         return;
1987     }
1988     AudioPlaybackCaptureConfig filterConfig = AudioPlaybackCaptureConfig();
1989     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
1990     CHECK_AND_RETURN(audioServerPtr != nullptr);
1991     int32_t innerCapId = g_fuzzUtils.GetData<int32_t>();
1992     audioServerPtr->InnerCheckCaptureLimit(filterConfig, innerCapId);
1993 }
1994 #endif
1995 
AudioServerIsNormalIpcStreamFuzzTest(const uint8_t * rawData,size_t size)1996 void AudioServerIsNormalIpcStreamFuzzTest(const uint8_t *rawData, size_t size)
1997 {
1998     if (rawData == nullptr || size < LIMITSIZE) {
1999         return;
2000     }
2001     AudioProcessConfig config;
2002     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
2003     CHECK_AND_RETURN(audioServerPtr != nullptr);
2004     config.audioMode = g_fuzzUtils.GetData<AudioMode>();
2005     audioServerPtr->IsNormalIpcStream(config);
2006 }
2007 
AudioServerCheckRemoteDeviceStateSwitchCaseFuzzTest(const uint8_t * rawData,size_t size)2008 void AudioServerCheckRemoteDeviceStateSwitchCaseFuzzTest(const uint8_t *rawData, size_t size)
2009 {
2010     if (rawData == nullptr || size < LIMITSIZE) {
2011         return;
2012     }
2013     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
2014     CHECK_AND_RETURN(audioServerPtr != nullptr);
2015     bool isStartDevice = g_fuzzUtils.GetData<bool>();
2016     int32_t deviceRole = g_fuzzUtils.GetData<int32_t>();
2017     audioServerPtr->CheckRemoteDeviceState("LocalDevice", deviceRole, isStartDevice);
2018 }
2019 
AudioServerCheckInnerRecorderPermissionSourceTypeFuzzTest(const uint8_t * rawData,size_t size)2020 void AudioServerCheckInnerRecorderPermissionSourceTypeFuzzTest(const uint8_t *rawData, size_t size)
2021 {
2022     if (rawData == nullptr || size < LIMITSIZE) {
2023         return;
2024     }
2025     AudioProcessConfig config;
2026     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
2027     CHECK_AND_RETURN(audioServerPtr != nullptr);
2028     config.capturerInfo.sourceType = g_fuzzUtils.GetData<SourceType>();
2029     audioServerPtr->CheckInnerRecorderPermission(config);
2030 }
2031 
AudioServerSetRenderWhitelistFuzzTest(const uint8_t * rawData,size_t size)2032 void AudioServerSetRenderWhitelistFuzzTest(const uint8_t *rawData, size_t size)
2033 {
2034     if (rawData == nullptr || size < LIMITSIZE) {
2035         return;
2036     }
2037     std::shared_ptr<AudioServer> audioServerPtr = std::make_shared<AudioServer>(SYSTEM_ABILITY_ID, RUN_ON_CREATE);
2038     CHECK_AND_RETURN(audioServerPtr != nullptr);
2039     std::vector<std::string> list;
2040     list.push_back(g_fuzzUtils.GetData<std::string>());
2041     audioServerPtr->SetRenderWhitelist(list);
2042 }
2043 
2044 } // namespace AudioStandard
2045 } // namesapce OHOS
2046 
2047 OHOS::AudioStandard::TestPtr g_testPtrs[] = {
2048     OHOS::AudioStandard::AudioServerDumpTest,
2049     OHOS::AudioStandard::AudioServerGetUsbParameterTest,
2050     OHOS::AudioStandard::AudioServerOnAddSystemAbilityTest,
2051     OHOS::AudioStandard::AudioServerSetExtraParametersTest,
2052     OHOS::AudioStandard::AudioServerSetAudioParameterByKeyTest,
2053     OHOS::AudioStandard::AudioServerGetExtraParametersTest,
2054     OHOS::AudioStandard::AudioServerGetAudioParameterByIdTest,
2055     OHOS::AudioStandard::AudioServerIsFastBlockedTest,
2056     OHOS::AudioStandard::AudioServerCheckRemoteDeviceStateTestTwo,
2057     OHOS::AudioStandard::AudioServerCreateAudioStreamTest,
2058     OHOS::AudioStandard::AudioServerSetSinkRenderEmptyTest,
2059     OHOS::AudioStandard::AudioServerOnRenderSinkStateChangeTest,
2060     OHOS::AudioStandard::AudioServerCreateHdiSinkPortTest,
2061     OHOS::AudioStandard::AudioServerCreateHdiSourcePortTest,
2062     OHOS::AudioStandard::AudioServerFuzzTest,
2063     OHOS::AudioStandard::AudioServerOffloadSetVolumeFuzzTest,
2064     OHOS::AudioStandard::AudioServerNotifyStreamVolumeChangedFuzzTest,
2065     OHOS::AudioStandard::AudioServerResetRouteForDisconnectFuzzTest,
2066     OHOS::AudioStandard::AudioServerGetEffectLatencyTest,
2067     OHOS::AudioStandard::AudioServerGetMaxAmplitudeTest,
2068     OHOS::AudioStandard::AudioServerResetAudioEndpointTest,
2069     OHOS::AudioStandard::AudioServerCreatePlaybackCapturerManagerTest,
2070     OHOS::AudioStandard::AudioServerSetOutputDeviceSinkTest,
2071     OHOS::AudioStandard::AudioServerSetAudioMonoStateTest,
2072     OHOS::AudioStandard::AudioServerSetVoiceVolumeTest,
2073     OHOS::AudioStandard::AudioServerCheckRemoteDeviceStateTest,
2074     OHOS::AudioStandard::AudioServerNotifyDeviceInfoTest,
2075     OHOS::AudioStandard::AudioServerGetAudioParameterTest,
2076     OHOS::AudioStandard::AudioServerSetAudioParameterTest,
2077     OHOS::AudioStandard::AudioServerSetMicrophoneMuteTest,
2078     OHOS::AudioStandard::AudioServerSetAudioBalanceValueTest,
2079     OHOS::AudioStandard::AudioServerSetAudioSceneTest,
2080     OHOS::AudioStandard::AudioServerUpdateLatencyTimestampTest,
2081     OHOS::AudioStandard::AudioServerSetOffloadModeTest,
2082     OHOS::AudioStandard::AudioServerUnsetOffloadTest,
2083     OHOS::AudioStandard::AudioServerCheckHibernateStateTest,
2084     OHOS::AudioStandard::AudioServerSetSessionMuteStateTest,
2085     OHOS::AudioStandard::AudioServerNotifyMuteStateChangeTest,
2086     OHOS::AudioStandard::AudioServerAudioWorkgroupCreateTest,
2087     OHOS::AudioStandard::AudioServerAudioWorkgroupReleaseTest,
2088     OHOS::AudioStandard::AudioServerAudioWorkgroupAddThreadTest,
2089     OHOS::AudioStandard::AudioServerAudioWorkgroupRemoveThreadTest,
2090     OHOS::AudioStandard::AudioServerAudioWorkgroupStartGroupTest,
2091     OHOS::AudioStandard::AudioServerAudioWorkgroupStopGroupTest,
2092     OHOS::AudioStandard::AudioServerRegisterDataTransferCallbackTest,
2093     OHOS::AudioStandard::AudioServerWriteServiceStartupErrorTest,
2094     OHOS::AudioStandard::AudioServerProcessKeyValuePairsTest,
2095     OHOS::AudioStandard::AudioServerSetA2dpAudioParameterTest,
2096     OHOS::AudioStandard::AudioServerGetAudioParameterByKeyTest,
2097     OHOS::AudioStandard::AudioServerGetDPParameterTest,
2098     OHOS::AudioStandard::AudioServerSetAudioSceneByDeviceTypeTest,
2099     OHOS::AudioStandard::AudioServerNotifyDeviceInfoFuzzTest,
2100     OHOS::AudioStandard::AudioServerSetVoiceVolumeFuzzTest,
2101     OHOS::AudioStandard::AudioServerCheckRemoteDeviceStateFuzzTest,
2102     OHOS::AudioStandard::AudioServerSetAudioBalanceValueFuzzTest,
2103     OHOS::AudioStandard::AudioServerRemoveRendererDataTransferCallbackFuzzTest,
2104     OHOS::AudioStandard::AudioServerRegisterDataTransferCallbackFuzzTest,
2105     OHOS::AudioStandard::AudioServerRegisterDataTransferMonitorParamFuzzTest,
2106     OHOS::AudioStandard::AudioServerUnregisterDataTransferMonitorParamFuzzTest,
2107     OHOS::AudioStandard::AudioServerOnDataTransferStateChangeFuzzTest,
2108     OHOS::AudioStandard::AudioServerRegisterDataTransferStateChangeCallbackFuzzTest,
2109     OHOS::AudioStandard::AudioServerInitMaxRendererStreamCntPerUidFuzzTest,
2110     OHOS::AudioStandard::AudioServerSetPcmDumpParameterFuzzTest,
2111     OHOS::AudioStandard::AudioServerSuspendRenderSinkFuzzTest,
2112     OHOS::AudioStandard::AudioServerRestoreRenderSinkFuzzTest,
2113     OHOS::AudioStandard::AudioServerSetAudioParameterFuzzTest,
2114     OHOS::AudioStandard::AudioServerGetTransactionIdFuzzTest,
2115     OHOS::AudioStandard::AudioServerSetIORoutesFuzzTest,
2116     OHOS::AudioStandard::AudioServerUpdateActiveDeviceRouteFuzzTest,
2117     OHOS::AudioStandard::AudioServerUpdateActiveDevicesRouteFuzzTest,
2118     OHOS::AudioStandard::AudioServerSetDmDeviceTypeFuzzTest,
2119     OHOS::AudioStandard::AudioServerSetAudioMonoStateFuzzTest,
2120     OHOS::AudioStandard::AudioServerGetHapBuildApiVersionFuzzTest,
2121     OHOS::AudioStandard::AudioServerResetRecordConfigFuzzTest,
2122     OHOS::AudioStandard::AudioServerResetProcessConfigFuzzTest,
2123     OHOS::AudioStandard::AudioServerCheckStreamInfoFormatFuzzTest,
2124     OHOS::AudioStandard::AudioServerCheckRendererFormatFuzzTest,
2125     OHOS::AudioStandard::AudioServerCheckRecorderFormatFuzzTest,
2126     OHOS::AudioStandard::AudioServerCheckConfigFormatFuzzTest,
2127     OHOS::AudioStandard::AudioServerSendCreateErrorInfoFuzzTest,
2128     OHOS::AudioStandard::AudioServerCheckMaxRendererInstancesFuzzTest,
2129     OHOS::AudioStandard::AudioServerCheckMaxLoopbackInstancesFuzzTest,
2130     OHOS::AudioStandard::AudioServerCheckAndWaitAudioPolicyReadyFuzzTest,
2131     OHOS::AudioStandard::AudioServerIsSatelliteFuzzTest,
2132     OHOS::AudioStandard::AudioServerCreateAudioProcessFuzzTest,
2133     OHOS::AudioStandard::AudioServerCreateAudioProcessInnerFuzzTest,
2134     OHOS::AudioStandard::AudioServerPermissionCheckerFuzzTest,
2135     OHOS::AudioStandard::AudioServerCheckPlaybackPermissionFuzzTest,
2136     OHOS::AudioStandard::AudioServerCheckInnerRecorderPermissionFuzzTest,
2137     OHOS::AudioStandard::AudioServerHandleCheckRecorderBackgroundCaptureFuzzTest,
2138     OHOS::AudioStandard::AudioServerSetForegroundListFuzzTest,
2139     OHOS::AudioStandard::AudioServerCreatePlaybackCapturerManagerFuzzTest,
2140     OHOS::AudioStandard::AudioServerRegisterAudioCapturerSourceCallbackFuzzTest,
2141     OHOS::AudioStandard::AudioServerRegisterAudioRendererSinkCallbackFuzzTest,
2142     OHOS::AudioStandard::AudioServerGetMaxAmplitudeFuzzTest,
2143     OHOS::AudioStandard::AudioServerGetVolumeDataCountFuzzTest,
2144     OHOS::AudioStandard::AudioServerUpdateLatencyTimestampFuzzTest,
2145     OHOS::AudioStandard::AudioServerCheckHibernateStateFuzzTest,
2146     OHOS::AudioStandard::AudioServerCreateIpcOfflineStreamFuzzTest,
2147     OHOS::AudioStandard::AudioServerGetOfflineAudioEffectChainsFuzzTest,
2148     OHOS::AudioStandard::AudioServerGetStandbyStatusFuzzTest,
2149     OHOS::AudioStandard::AudioServerGenerateSessionIdFuzzTest,
2150     OHOS::AudioStandard::AudioServerNotifyAudioPolicyReadyFuzzTest,
2151     OHOS::AudioStandard::AudioServerGetAllSinkInputsFuzzTest,
2152     OHOS::AudioStandard::AudioServerReleaseCaptureLimitFuzzTest,
2153     OHOS::AudioStandard::AudioServerLoadHdiAdapterFuzzTest,
2154     OHOS::AudioStandard::AudioServerUnloadHdiAdapterFuzzTest,
2155     OHOS::AudioStandard::AudioServerCreateSinkPortFuzzTest,
2156     OHOS::AudioStandard::AudioServerCreateSourcePortFuzzTest,
2157     OHOS::AudioStandard::AudioServerDestroyHdiPortFuzzTest,
2158     OHOS::AudioStandard::AudioServerSetDeviceConnectedFlagFuzzTest,
2159     OHOS::AudioStandard::AudioServerSetBtHdiInvalidStateFuzzTest,
2160     OHOS::AudioStandard::AudioServerCreateAudioWorkgroupFuzzTest,
2161     OHOS::AudioStandard::AudioServerReleaseAudioWorkgroupFuzzTest,
2162     OHOS::AudioStandard::AudioServerAddThreadToGroupFuzzTest,
2163     OHOS::AudioStandard::AudioServerForceStopAudioStreamFuzzTest,
2164     OHOS::AudioStandard::AudioServerStartGroupFuzzTest,
2165     OHOS::AudioStandard::AudioServerStopGroupFuzzTest,
2166     OHOS::AudioStandard::AudioServerSetActiveOutputDeviceFuzzTest,
2167     OHOS::AudioStandard::AudioServerResetRecordConfigSourceTypeFuzzTest,
2168     OHOS::AudioStandard::AudioServerResetProcessConfigCallerUidFuzzTest,
2169     OHOS::AudioStandard::AudioServerCheckStreamInfoFormatNotContainFuzzTest,
2170     OHOS::AudioStandard::AudioServerCheckRendererFormatNotContainFuzzTest,
2171     OHOS::AudioStandard::AudioServerCheckRecorderFormatNotContainFuzzTest,
2172     OHOS::AudioStandard::AudioServerCreateAudioProcessInnerAudioModeFuzzTest,
2173 #ifdef HAS_FEATURE_INNERCAPTURER
2174     OHOS::AudioStandard::AudioServerHandleCheckCaptureLimitFuzzTest,
2175     OHOS::AudioStandard::AudioServerInnerCheckCaptureLimitFuzzTest,
2176 #endif
2177     OHOS::AudioStandard::AudioServerIsNormalIpcStreamFuzzTest,
2178     OHOS::AudioStandard::AudioServerCheckRemoteDeviceStateSwitchCaseFuzzTest,
2179     OHOS::AudioStandard::AudioServerCheckInnerRecorderPermissionSourceTypeFuzzTest,
2180     OHOS::AudioStandard::AudioServerSetRenderWhitelistFuzzTest,
2181     OHOS::AudioStandard::AudioServerOnMuteStateChangeFuzzTest
2182 };
2183 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)2184 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
2185 {
2186     /* Run your code on data */
2187     if (data == nullptr || size <= 1) {
2188         return 0;
2189     }
2190     uint32_t len = OHOS::AudioStandard::GetArrLength(g_testPtrs);
2191     if (len > 0) {
2192         uint8_t firstByte = *data % len;
2193         if (firstByte >= len) {
2194             return 0;
2195         }
2196         data = data + 1;
2197         size = size - 1;
2198         g_testPtrs[firstByte](data, size);
2199     }
2200     return 0;
2201 }