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 #include "wpa_common_fuzzer.h"
16 
17 #define WLAN_FREQ_MAX_NUM 35
18 #define ETH_ADDR_LEN 6
19 #define BITS_NUM_24 24
20 #define BITS_NUM_16 16
21 #define BITS_NUM_8 8
22 #define REPLY_SIZE 1024
23 
24 static uint32_t g_wpaTestSize = 0;
25 struct IWpaCallback *g_wpaCallbackObj = nullptr;
26 
SetWpaDataSize(const uint32_t * dataSize)27 uint32_t SetWpaDataSize(const uint32_t *dataSize)
28 {
29     if (dataSize != nullptr) {
30         g_wpaTestSize = *dataSize;
31         return HDF_SUCCESS;
32     }
33     HDF_LOGE("%{public}s: set data size failed!", __FUNCTION__);
34     return HDF_FAILURE;
35 }
36 
GetWpaDataSize(uint32_t * dataSize)37 uint32_t GetWpaDataSize(uint32_t *dataSize)
38 {
39     if (dataSize != nullptr) {
40         *dataSize = g_wpaTestSize;
41         return HDF_SUCCESS;
42     }
43     HDF_LOGE("%{public}s: get data size failed!", __FUNCTION__);
44     return HDF_FAILURE;
45 }
46 
Convert2Uint32(const uint8_t * ptr)47 uint32_t Convert2Uint32(const uint8_t *ptr)
48 {
49     if (ptr == nullptr) {
50         return 0;
51     }
52     /*
53      * Move the 0th digit 24 to the left, the first digit 16 to the left, the second digit 8 to the left,
54      * and the third digit no left
55      */
56     return (ptr[0] << BITS_NUM_24) | (ptr[1] << BITS_NUM_16) | (ptr[2] << BITS_NUM_8) | (ptr[3]);
57 }
58 
PreProcessRawData(const uint8_t * rawData,size_t size,uint8_t * tmpRawData,size_t tmpRawDataSize)59 bool PreProcessRawData(const uint8_t *rawData, size_t size, uint8_t *tmpRawData, size_t tmpRawDataSize)
60 {
61     if (rawData == nullptr || tmpRawData == nullptr) {
62         HDF_LOGE("%{public}s: rawData or tmpRawData is nullptr!", __FUNCTION__);
63         return false;
64     }
65     uint32_t dataSize = size - OFFSET;
66     if (memcpy_s(tmpRawData, tmpRawDataSize, rawData + OFFSET, dataSize) != EOK) {
67         HDF_LOGE("%{public}s: memcpy_s failed!", __FUNCTION__);
68         return false;
69     }
70     if (SetWpaDataSize(&dataSize) != HDF_SUCCESS) {
71         HDF_LOGE("%{public}s: set data size failed!", __FUNCTION__);
72         return false;
73     }
74     return true;
75 }
76 
77 /* **********Wpa Interface********** */
FuzzWpaInterfaceStart(struct IWpaInterface * interface,const uint8_t * rawData)78 void FuzzWpaInterfaceStart(struct IWpaInterface *interface, const uint8_t *rawData)
79 {
80     interface->Start(interface);
81     HDF_LOGI("%{public}s: success", __FUNCTION__);
82 }
83 
FuzzWpaInterfaceStop(struct IWpaInterface * interface,const uint8_t * rawData)84 void FuzzWpaInterfaceStop(struct IWpaInterface *interface, const uint8_t *rawData)
85 {
86     interface->Stop(interface);
87     HDF_LOGI("%{public}s: success", __FUNCTION__);
88 }
89 
FuzzWpaInterfaceScan(struct IWpaInterface * interface,const uint8_t * rawData)90 void FuzzWpaInterfaceScan(struct IWpaInterface *interface, const uint8_t *rawData)
91 {
92     const char *ifName = reinterpret_cast<const char *>(rawData);
93 
94     interface->Scan(interface, ifName);
95     HDF_LOGI("%{public}s: success", __FUNCTION__);
96 }
97 
FuzzWpaInterfaceScanResult(struct IWpaInterface * interface,const uint8_t * rawData)98 void FuzzWpaInterfaceScanResult(struct IWpaInterface *interface, const uint8_t *rawData)
99 {
100     const char *ifName = reinterpret_cast<const char *>(rawData);
101     unsigned char buf[ETH_ADDR_LEN] = {0x12, 0x34, 0x56, 0x78, 0xab, 0xcd};
102     uint32_t bufLen = ETH_ADDR_LEN;
103     interface->ScanResult(interface, ifName, buf, &bufLen);
104     HDF_LOGI("%{public}s: success", __FUNCTION__);
105 }
106 
FuzzWpaInterfaceAddNetwork(struct IWpaInterface * interface,const uint8_t * rawData)107 void FuzzWpaInterfaceAddNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
108 {
109     const char *ifName = reinterpret_cast<const char *>(rawData);
110     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
111 
112     interface->AddNetwork(interface, ifName, &networkId);
113     HDF_LOGI("%{public}s: success", __FUNCTION__);
114 }
115 
FuzzWpaInterfaceRemoveNetwork(struct IWpaInterface * interface,const uint8_t * rawData)116 void FuzzWpaInterfaceRemoveNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
117 {
118     const char *ifName = reinterpret_cast<const char *>(rawData);
119     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
120 
121     interface->RemoveNetwork(interface, ifName, networkId);
122     HDF_LOGI("%{public}s: success", __FUNCTION__);
123 }
124 
FuzzWpaInterfaceDisableNetwork(struct IWpaInterface * interface,const uint8_t * rawData)125 void FuzzWpaInterfaceDisableNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
126 {
127     const char *ifName = reinterpret_cast<const char *>(rawData);
128     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
129 
130     interface->DisableNetwork(interface, ifName, networkId);
131     HDF_LOGI("%{public}s: success", __FUNCTION__);
132 }
133 
FuzzWpaInterfaceSetNetwork(struct IWpaInterface * interface,const uint8_t * rawData)134 void FuzzWpaInterfaceSetNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
135 {
136     const char *ifName = reinterpret_cast<const char *>(rawData);
137     const char *name = reinterpret_cast<const char *>(rawData);
138     const char *value = reinterpret_cast<const char *>(rawData);
139     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
140 
141     interface->SetNetwork(interface, ifName, networkId, name, value);
142     HDF_LOGI("%{public}s: success", __FUNCTION__);
143 }
144 
FuzzWpaInterfaceReconnect(struct IWpaInterface * interface,const uint8_t * rawData)145 void FuzzWpaInterfaceReconnect(struct IWpaInterface *interface, const uint8_t *rawData)
146 {
147     const char *ifName = reinterpret_cast<const char *>(rawData);
148 
149     interface->Reconnect(interface, ifName);
150     HDF_LOGI("%{public}s: success", __FUNCTION__);
151 }
152 
FuzzWpaInterfaceDisconnect(struct IWpaInterface * interface,const uint8_t * rawData)153 void FuzzWpaInterfaceDisconnect(struct IWpaInterface *interface, const uint8_t *rawData)
154 {
155     const char *ifName = reinterpret_cast<const char *>(rawData);
156 
157     interface->Disconnect(interface, ifName);
158     HDF_LOGI("%{public}s: success", __FUNCTION__);
159 }
160 
FuzzWpaInterfaceSelectNetwork(struct IWpaInterface * interface,const uint8_t * rawData)161 void FuzzWpaInterfaceSelectNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
162 {
163     const char *ifName = reinterpret_cast<const char *>(rawData);
164     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
165 
166     interface->SelectNetwork(interface, ifName, networkId);
167     HDF_LOGI("%{public}s: success", __FUNCTION__);
168 }
169 
FuzzWpaInterfaceEnableNetwork(struct IWpaInterface * interface,const uint8_t * rawData)170 void FuzzWpaInterfaceEnableNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
171 {
172     const char *ifName = reinterpret_cast<const char *>(rawData);
173     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
174 
175     interface->EnableNetwork(interface, ifName, networkId);
176     HDF_LOGI("%{public}s: success", __FUNCTION__);
177 }
178 
FuzzWpaInterfaceSetPowerSave(struct IWpaInterface * interface,const uint8_t * rawData)179 void FuzzWpaInterfaceSetPowerSave(struct IWpaInterface *interface, const uint8_t *rawData)
180 {
181     const char *ifName = reinterpret_cast<const char *>(rawData);
182     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
183 
184     interface->SetPowerSave(interface, ifName, enable);
185     HDF_LOGI("%{public}s: success", __FUNCTION__);
186 }
187 
FuzzWpaInterfaceAutoConnect(struct IWpaInterface * interface,const uint8_t * rawData)188 void FuzzWpaInterfaceAutoConnect(struct IWpaInterface *interface, const uint8_t *rawData)
189 {
190     const char *ifName = reinterpret_cast<const char *>(rawData);
191     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
192 
193     interface->AutoConnect(interface, ifName, enable);
194     HDF_LOGI("%{public}s: success", __FUNCTION__);
195 }
196 
FuzzWpaInterfaceSaveConfig(struct IWpaInterface * interface,const uint8_t * rawData)197 void FuzzWpaInterfaceSaveConfig(struct IWpaInterface *interface, const uint8_t *rawData)
198 {
199     const char *ifName = reinterpret_cast<const char *>(rawData);
200 
201     interface->SaveConfig(interface, ifName);
202     HDF_LOGI("%{public}s: success", __FUNCTION__);
203 }
204 
FuzzWpaInterfaceWpsCancel(struct IWpaInterface * interface,const uint8_t * rawData)205 void FuzzWpaInterfaceWpsCancel(struct IWpaInterface *interface, const uint8_t *rawData)
206 {
207     const char *ifName = reinterpret_cast<const char *>(rawData);
208 
209     interface->WpsCancel(interface, ifName);
210     HDF_LOGI("%{public}s: success", __FUNCTION__);
211 }
212 
FuzzWpaInterfaceGetCountryCode(struct IWpaInterface * interface,const uint8_t * rawData)213 void FuzzWpaInterfaceGetCountryCode(struct IWpaInterface *interface, const uint8_t *rawData)
214 {
215     const char *ifName = reinterpret_cast<const char *>(rawData);
216     char countryCode[3] = {0};
217 
218     interface->GetCountryCode(interface, ifName, countryCode, 3);
219     HDF_LOGI("%{public}s: success", __FUNCTION__);
220 }
221 
FuzzWpaInterfaceGetNetwork(struct IWpaInterface * interface,const uint8_t * rawData)222 void FuzzWpaInterfaceGetNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
223 {
224     const char *ifName = reinterpret_cast<const char *>(rawData);
225     int networkId = 0;
226     char value[32] = {0};
227 
228     interface->GetNetwork(interface, ifName, networkId, "ssid", value, 32);
229     HDF_LOGI("%{public}s: success", __FUNCTION__);
230 }
231 
FuzzWpaInterfaceBlocklistClear(struct IWpaInterface * interface,const uint8_t * rawData)232 void FuzzWpaInterfaceBlocklistClear(struct IWpaInterface *interface, const uint8_t *rawData)
233 {
234     const char *ifName = reinterpret_cast<const char *>(rawData);
235 
236     interface->BlocklistClear(interface, ifName);
237     HDF_LOGI("%{public}s: success", __FUNCTION__);
238 }
239 
FuzzWpaInterfaceSetSuspendMode(struct IWpaInterface * interface,const uint8_t * rawData)240 void FuzzWpaInterfaceSetSuspendMode(struct IWpaInterface *interface, const uint8_t *rawData)
241 {
242     const char *ifName = reinterpret_cast<const char *>(rawData);
243     int32_t mode = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
244 
245     interface->SetSuspendMode(interface, ifName, mode);
246     HDF_LOGI("%{public}s: success", __FUNCTION__);
247 }
248 
FuzzWpaInterfaceGetScanSsid(struct IWpaInterface * interface,const uint8_t * rawData)249 void FuzzWpaInterfaceGetScanSsid(struct IWpaInterface *interface, const uint8_t *rawData)
250 {
251     const char *ifName = reinterpret_cast<const char *>(rawData);
252     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
253 
254     interface->GetScanSsid(interface, ifName, &enable);
255     HDF_LOGI("%{public}s: success", __FUNCTION__);
256 }
257 
FuzzWpaInterfaceGetPskPassphrase(struct IWpaInterface * interface,const uint8_t * rawData)258 void FuzzWpaInterfaceGetPskPassphrase(struct IWpaInterface *interface, const uint8_t *rawData)
259 {
260     const char *ifName = reinterpret_cast<const char *>(rawData);
261     char psk[32] = {0};
262 
263     interface->GetPskPassphrase(interface, ifName, psk, 32);
264     HDF_LOGI("%{public}s: success", __FUNCTION__);
265 }
266 
FuzzWpaInterfaceGetPsk(struct IWpaInterface * interface,const uint8_t * rawData)267 void FuzzWpaInterfaceGetPsk(struct IWpaInterface *interface, const uint8_t *rawData)
268 {
269     const char *ifName = reinterpret_cast<const char *>(rawData);
270     uint8_t psk[32] = {0};
271     uint32_t pskLen = 32;
272 
273     interface->GetPsk(interface, ifName, psk, &pskLen);
274     HDF_LOGI("%{public}s: success", __FUNCTION__);
275 }
276 
FuzzWpaInterfaceGetWepKey(struct IWpaInterface * interface,const uint8_t * rawData)277 void FuzzWpaInterfaceGetWepKey(struct IWpaInterface *interface, const uint8_t *rawData)
278 {
279     const char *ifName = reinterpret_cast<const char *>(rawData);
280     uint8_t wepKey[16] = {0};
281     uint32_t wepKeyLen = 16;
282 
283     interface->GetWepKey(interface, ifName, 1, wepKey, &wepKeyLen);
284     HDF_LOGI("%{public}s: success", __FUNCTION__);
285 }
286 
FuzzWpaInterfaceGetWepTxKeyIdx(struct IWpaInterface * interface,const uint8_t * rawData)287 void FuzzWpaInterfaceGetWepTxKeyIdx(struct IWpaInterface *interface, const uint8_t *rawData)
288 {
289     const char *ifName = reinterpret_cast<const char *>(rawData);
290     int keyIdx = *const_cast<int *>(reinterpret_cast<const int *>(rawData));
291 
292     interface->GetWepTxKeyIdx(interface, ifName, &keyIdx);
293     HDF_LOGI("%{public}s: success", __FUNCTION__);
294 }
295 
FuzzWpaInterfaceGetRequirePmf(struct IWpaInterface * interface,const uint8_t * rawData)296 void FuzzWpaInterfaceGetRequirePmf(struct IWpaInterface *interface, const uint8_t *rawData)
297 {
298     const char *ifName = reinterpret_cast<const char *>(rawData);
299     int enable = *const_cast<int *>(reinterpret_cast<const int *>(rawData));
300 
301     interface->GetRequirePmf(interface, ifName, &enable);
302     HDF_LOGI("%{public}s: success", __FUNCTION__);
303 }
304 
FuzzWpaInterfaceSetCountryCode(struct IWpaInterface * interface,const uint8_t * rawData)305 void FuzzWpaInterfaceSetCountryCode(struct IWpaInterface *interface, const uint8_t *rawData)
306 {
307     const char *ifName = reinterpret_cast<const char *>(rawData);
308     const char countryCode[3] = {0};
309 
310     interface->SetCountryCode(interface, ifName, countryCode);
311     HDF_LOGI("%{public}s: success", __FUNCTION__);
312 }
313 
FuzzWpaInterfaceListNetworks(struct IWpaInterface * interface,const uint8_t * rawData)314 void FuzzWpaInterfaceListNetworks(struct IWpaInterface *interface, const uint8_t *rawData)
315 {
316     const char *ifName = reinterpret_cast<const char *>(rawData);
317     struct HdiWifiWpaNetworkInfo networkInfo;
318     (void)memset_s(&networkInfo, sizeof(struct HdiWifiWpaNetworkInfo), 0, sizeof(struct HdiWifiWpaNetworkInfo));
319     uint32_t networkInfoLen = 0;
320 
321     interface->ListNetworks(interface, ifName, (struct HdiWifiWpaNetworkInfo *)&networkInfo, &networkInfoLen);
322     HDF_LOGI("%{public}s: success", __FUNCTION__);
323 }
324 
FuzzWpaInterfaceWifiStatus(struct IWpaInterface * interface,const uint8_t * rawData)325 void FuzzWpaInterfaceWifiStatus(struct IWpaInterface *interface, const uint8_t *rawData)
326 {
327     const char *ifName = reinterpret_cast<const char *>(rawData);
328     struct HdiWpaCmdStatus wifiStatus;
329     (void)memset_s(&wifiStatus, sizeof(struct HdiWpaCmdStatus), 0, sizeof(struct HdiWpaCmdStatus));
330 
331     interface->WifiStatus(interface, ifName, &wifiStatus);
332     HDF_LOGI("%{public}s: success", __FUNCTION__);
333 }
334 
FuzzWpaInterfaceWpsPbcMode(struct IWpaInterface * interface,const uint8_t * rawData)335 void FuzzWpaInterfaceWpsPbcMode(struct IWpaInterface *interface, const uint8_t *rawData)
336 {
337     const char *ifName = reinterpret_cast<const char *>(rawData);
338     struct HdiWifiWpsParam wpsParam;
339     (void)memset_s(&wpsParam, sizeof(struct HdiWifiWpsParam), 0, sizeof(struct HdiWifiWpsParam));
340     wpsParam.anyFlag = 1;
341     wpsParam.multiAp = 1;
342     wpsParam.bssidLen = 6;
343     wpsParam.bssid = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * (wpsParam.bssidLen)));
344     if (wpsParam.bssid == nullptr) {
345         return;
346     }
347     wpsParam.bssid[0] = 0x12;
348     wpsParam.bssid[1] = 0x34;
349     wpsParam.bssid[2] = 0x56;
350     wpsParam.bssid[3] = 0x78;
351     wpsParam.bssid[4] = 0xab;
352     wpsParam.bssid[5] = 0xcd;
353 
354     interface->WpsPbcMode(interface, ifName, &wpsParam);
355     OsalMemFree(wpsParam.bssid);
356     HDF_LOGI("%{public}s: success", __FUNCTION__);
357 }
358 
FuzzWpaInterfaceWpsPinMode(struct IWpaInterface * interface,const uint8_t * rawData)359 void FuzzWpaInterfaceWpsPinMode(struct IWpaInterface *interface, const uint8_t *rawData)
360 {
361     const char *ifName = reinterpret_cast<const char *>(rawData);
362     struct HdiWifiWpsParam wpsParam;
363     (void)memset_s(&wpsParam, sizeof(struct HdiWifiWpsParam), 0, sizeof(struct HdiWifiWpsParam));
364     wpsParam.anyFlag = 1;
365     wpsParam.multiAp = 1;
366     wpsParam.bssidLen = 6;
367     wpsParam.bssid = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * (wpsParam.bssidLen)));
368     if (wpsParam.bssid == nullptr) {
369         return;
370     }
371     wpsParam.bssid[0] = 0x12;
372     wpsParam.bssid[1] = 0x34;
373     wpsParam.bssid[2] = 0x56;
374     wpsParam.bssid[3] = 0x78;
375     wpsParam.bssid[4] = 0xab;
376     wpsParam.bssid[5] = 0xcd;
377     int pinCode = 0;
378 
379     interface->WpsPinMode(interface, ifName, &wpsParam, &pinCode);
380     OsalMemFree(wpsParam.bssid);
381     HDF_LOGI("%{public}s: success", __FUNCTION__);
382 }
383 
FuzzWpaInterfaceRegisterEventCallback(struct IWpaInterface * interface,const uint8_t * rawData)384 void FuzzWpaInterfaceRegisterEventCallback(struct IWpaInterface *interface, const uint8_t *rawData)
385 {
386     const char *ifName = reinterpret_cast<const char *>(rawData);
387 
388     interface->RegisterEventCallback(interface, g_wpaCallbackObj, ifName);
389     HDF_LOGI("%{public}s: success", __FUNCTION__);
390 }
391 
FuzzWpaInterfaceUnregisterEventCallback(struct IWpaInterface * interface,const uint8_t * rawData)392 void FuzzWpaInterfaceUnregisterEventCallback(struct IWpaInterface *interface, const uint8_t *rawData)
393 {
394     const char *ifName = reinterpret_cast<const char *>(rawData);
395 
396     interface->UnregisterEventCallback(interface, g_wpaCallbackObj, ifName);
397     HDF_LOGI("%{public}s: success", __FUNCTION__);
398 }
399 
FuzzWpaInterfaceGetConnectionCapabilities(struct IWpaInterface * interface,const uint8_t * rawData)400 void FuzzWpaInterfaceGetConnectionCapabilities(struct IWpaInterface *interface, const uint8_t *rawData)
401 {
402     const char *ifName = reinterpret_cast<const char *>(rawData);
403     struct ConnectionCapabilities connectionCap;
404     (void)memset_s(&connectionCap, sizeof(struct ConnectionCapabilities), 0, sizeof(struct ConnectionCapabilities));
405 
406     interface->GetConnectionCapabilities(interface, ifName, &connectionCap);
407     HDF_LOGI("%{public}s: success", __FUNCTION__);
408 }
409 
FuzzWpaInterfaceAddWpaIface(struct IWpaInterface * interface,const uint8_t * rawData)410 void FuzzWpaInterfaceAddWpaIface(struct IWpaInterface *interface, const uint8_t *rawData)
411 {
412     const char *ifName = reinterpret_cast<const char *>(rawData);
413     const char *configname = "/data/service/el1/public/wifi/wpa_supplicant/wpa_supplicant.conf";
414     interface->AddWpaIface(interface, ifName, configname);
415     HDF_LOGI("%{public}s: success", __FUNCTION__);
416 }
417 
FuzzWpaInterfaceRemoveWpaIface(struct IWpaInterface * interface,const uint8_t * rawData)418 void FuzzWpaInterfaceRemoveWpaIface(struct IWpaInterface *interface, const uint8_t *rawData)
419 {
420     const char *ifName = reinterpret_cast<const char *>(rawData);
421 
422     interface->RemoveWpaIface(interface, ifName);
423     HDF_LOGI("%{public}s: success", __FUNCTION__);
424 }
425 
FuzzWpaInterfaceReassociate(struct IWpaInterface * interface,const uint8_t * rawData)426 void FuzzWpaInterfaceReassociate(struct IWpaInterface *interface, const uint8_t *rawData)
427 {
428     const char *ifName = reinterpret_cast<const char *>(rawData);
429 
430     interface->Reassociate(interface, ifName);
431     HDF_LOGI("%{public}s: success", __FUNCTION__);
432 }
433 
FuzzWpaInterfaceStaShellCmd(struct IWpaInterface * interface,const uint8_t * rawData)434 void FuzzWpaInterfaceStaShellCmd(struct IWpaInterface *interface, const uint8_t *rawData)
435 {
436     const char *ifName = reinterpret_cast<const char *>(rawData);
437     const char *cmd = reinterpret_cast<const char *>(rawData);
438 
439     interface->StaShellCmd(interface, ifName, cmd);
440     HDF_LOGI("%{public}s: success", __FUNCTION__);
441 }
442 
443 
444 /* **********P2p Interface********** */
FuzzWpaInterfaceP2pSetSsidPostfixName(struct IWpaInterface * interface,const uint8_t * rawData)445 void FuzzWpaInterfaceP2pSetSsidPostfixName(struct IWpaInterface *interface, const uint8_t *rawData)
446 {
447     const char *ifName = reinterpret_cast<const char *>(rawData);
448     const char *name = reinterpret_cast<const char *>(rawData);
449 
450     interface->P2pSetSsidPostfixName(interface, ifName, name);
451     HDF_LOGI("%{public}s: success", __FUNCTION__);
452 }
453 
FuzzWpaInterfaceP2pSetWpsDeviceType(struct IWpaInterface * interface,const uint8_t * rawData)454 void FuzzWpaInterfaceP2pSetWpsDeviceType(struct IWpaInterface *interface, const uint8_t *rawData)
455 {
456     const char *ifName = reinterpret_cast<const char *>(rawData);
457     const char *type = reinterpret_cast<const char *>(rawData);
458 
459     interface->P2pSetWpsDeviceType(interface, ifName, type);
460     HDF_LOGI("%{public}s: success", __FUNCTION__);
461 }
462 
FuzzWpaInterfaceP2pSetWpsConfigMethods(struct IWpaInterface * interface,const uint8_t * rawData)463 void FuzzWpaInterfaceP2pSetWpsConfigMethods(struct IWpaInterface *interface, const uint8_t *rawData)
464 {
465     const char *ifName = reinterpret_cast<const char *>(rawData);
466     const char *methods = reinterpret_cast<const char *>(rawData);
467 
468     interface->P2pSetWpsConfigMethods(interface, ifName, methods);
469     HDF_LOGI("%{public}s: success", __FUNCTION__);
470 }
471 
FuzzWpaInterfaceP2pSetGroupMaxIdle(struct IWpaInterface * interface,const uint8_t * rawData)472 void FuzzWpaInterfaceP2pSetGroupMaxIdle(struct IWpaInterface *interface, const uint8_t *rawData)
473 {
474     const char *ifName = reinterpret_cast<const char *>(rawData);
475     int32_t time = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
476 
477     interface->P2pSetGroupMaxIdle(interface, ifName, time);
478     HDF_LOGI("%{public}s: success", __FUNCTION__);
479 }
480 
FuzzWpaInterfaceP2pSetWfdEnable(struct IWpaInterface * interface,const uint8_t * rawData)481 void FuzzWpaInterfaceP2pSetWfdEnable(struct IWpaInterface *interface, const uint8_t *rawData)
482 {
483     const char *ifName = reinterpret_cast<const char *>(rawData);
484     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
485 
486     interface->P2pSetWfdEnable(interface, ifName, enable);
487     HDF_LOGI("%{public}s: success", __FUNCTION__);
488 }
489 
FuzzWpaInterfaceP2pSetPersistentReconnect(struct IWpaInterface * interface,const uint8_t * rawData)490 void FuzzWpaInterfaceP2pSetPersistentReconnect(struct IWpaInterface *interface, const uint8_t *rawData)
491 {
492     const char *ifName = reinterpret_cast<const char *>(rawData);
493     int32_t status = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
494 
495     interface->P2pSetPersistentReconnect(interface, ifName, status);
496     HDF_LOGI("%{public}s: success", __FUNCTION__);
497 }
498 
FuzzWpaInterfaceP2pSetWpsSecondaryDeviceType(struct IWpaInterface * interface,const uint8_t * rawData)499 void FuzzWpaInterfaceP2pSetWpsSecondaryDeviceType(struct IWpaInterface *interface, const uint8_t *rawData)
500 {
501     const char *ifName = reinterpret_cast<const char *>(rawData);
502     const char *type = reinterpret_cast<const char *>(rawData);
503 
504     interface->P2pSetWpsSecondaryDeviceType(interface, ifName, type);
505     HDF_LOGI("%{public}s: success", __FUNCTION__);
506 }
507 
FuzzWpaInterfaceP2pSetupWpsPbc(struct IWpaInterface * interface,const uint8_t * rawData)508 void FuzzWpaInterfaceP2pSetupWpsPbc(struct IWpaInterface *interface, const uint8_t *rawData)
509 {
510     const char *ifName = reinterpret_cast<const char *>(rawData);
511     const char *address = reinterpret_cast<const char *>(rawData);
512 
513     interface->P2pSetupWpsPbc(interface, ifName, address);
514     HDF_LOGI("%{public}s: success", __FUNCTION__);
515 }
516 
FuzzWpaInterfaceP2pSetupWpsPin(struct IWpaInterface * interface,const uint8_t * rawData)517 void FuzzWpaInterfaceP2pSetupWpsPin(struct IWpaInterface *interface, const uint8_t *rawData)
518 {
519     const char *ifName = reinterpret_cast<const char *>(rawData);
520     const char *address = reinterpret_cast<const char *>(rawData);
521     const char *pin = reinterpret_cast<const char *>(rawData);
522     char result[32] = {0};
523     uint32_t resultLen = *const_cast<uint32_t *>(reinterpret_cast<const uint32_t *>(rawData));
524 
525 
526     interface->P2pSetupWpsPin(interface, ifName, address, pin, result, resultLen);
527     HDF_LOGI("%{public}s: success", __FUNCTION__);
528 }
529 
FuzzWpaInterfaceP2pSetPowerSave(struct IWpaInterface * interface,const uint8_t * rawData)530 void FuzzWpaInterfaceP2pSetPowerSave(struct IWpaInterface *interface, const uint8_t *rawData)
531 {
532     const char *ifName = reinterpret_cast<const char *>(rawData);
533     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
534 
535     interface->P2pSetPowerSave(interface, ifName, enable);
536     HDF_LOGI("%{public}s: success", __FUNCTION__);
537 }
538 
FuzzWpaInterfaceP2pSetDeviceName(struct IWpaInterface * interface,const uint8_t * rawData)539 void FuzzWpaInterfaceP2pSetDeviceName(struct IWpaInterface *interface, const uint8_t *rawData)
540 {
541     const char *ifName = reinterpret_cast<const char *>(rawData);
542     const char *name = reinterpret_cast<const char *>(rawData);
543 
544     interface->P2pSetDeviceName(interface, ifName, name);
545     HDF_LOGI("%{public}s: success", __FUNCTION__);
546 }
547 
FuzzWpaInterfaceP2pSetWfdDeviceConfig(struct IWpaInterface * interface,const uint8_t * rawData)548 void FuzzWpaInterfaceP2pSetWfdDeviceConfig(struct IWpaInterface *interface, const uint8_t *rawData)
549 {
550     const char *ifName = reinterpret_cast<const char *>(rawData);
551     const char *config = reinterpret_cast<const char *>(rawData);
552 
553     interface->P2pSetWfdDeviceConfig(interface, ifName, config);
554     HDF_LOGI("%{public}s: success", __FUNCTION__);
555 }
556 
FuzzWpaInterfaceP2pSetRandomMac(struct IWpaInterface * interface,const uint8_t * rawData)557 void FuzzWpaInterfaceP2pSetRandomMac(struct IWpaInterface *interface, const uint8_t *rawData)
558 {
559     const char *ifName = reinterpret_cast<const char *>(rawData);
560     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
561 
562     interface->P2pSetRandomMac(interface, ifName, networkId);
563     HDF_LOGI("%{public}s: success", __FUNCTION__);
564 }
565 
FuzzWpaInterfaceP2pStartFind(struct IWpaInterface * interface,const uint8_t * rawData)566 void FuzzWpaInterfaceP2pStartFind(struct IWpaInterface *interface, const uint8_t *rawData)
567 {
568     const char *ifName = reinterpret_cast<const char *>(rawData);
569     int32_t timeout = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
570 
571     interface->P2pStartFind(interface, ifName, timeout);
572     HDF_LOGI("%{public}s: success", __FUNCTION__);
573 }
574 
FuzzWpaInterfaceP2pSetExtListen(struct IWpaInterface * interface,const uint8_t * rawData)575 void FuzzWpaInterfaceP2pSetExtListen(struct IWpaInterface *interface, const uint8_t *rawData)
576 {
577     const char *ifName = reinterpret_cast<const char *>(rawData);
578     int32_t enable = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
579     int32_t period = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
580     int32_t interval = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
581 
582     interface->P2pSetExtListen(interface, ifName, enable, period, interval);
583     HDF_LOGI("%{public}s: success", __FUNCTION__);
584 }
585 
FuzzWpaInterfaceP2pSetListenChannel(struct IWpaInterface * interface,const uint8_t * rawData)586 void FuzzWpaInterfaceP2pSetListenChannel(struct IWpaInterface *interface, const uint8_t *rawData)
587 {
588     const char *ifName = reinterpret_cast<const char *>(rawData);
589     int32_t channel = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
590     int32_t regClass = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
591 
592     interface->P2pSetListenChannel(interface, ifName, channel, regClass);
593     HDF_LOGI("%{public}s: success", __FUNCTION__);
594 }
595 
FuzzWpaInterfaceP2pProvisionDiscovery(struct IWpaInterface * interface,const uint8_t * rawData)596 void FuzzWpaInterfaceP2pProvisionDiscovery(struct IWpaInterface *interface, const uint8_t *rawData)
597 {
598     const char *ifName = reinterpret_cast<const char *>(rawData);
599     const char *peerBssid = reinterpret_cast<const char *>(rawData);
600     int32_t mode = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
601 
602     interface->P2pProvisionDiscovery(interface, ifName, peerBssid, mode);
603     HDF_LOGI("%{public}s: success", __FUNCTION__);
604 }
605 
FuzzWpaInterfaceP2pAddGroup(struct IWpaInterface * interface,const uint8_t * rawData)606 void FuzzWpaInterfaceP2pAddGroup(struct IWpaInterface *interface, const uint8_t *rawData)
607 {
608     const char *ifName = reinterpret_cast<const char *>(rawData);
609     int32_t isPersistent = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
610     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
611     int32_t freq = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
612 
613     interface->P2pAddGroup(interface, ifName, isPersistent, networkId, freq);
614     HDF_LOGI("%{public}s: success", __FUNCTION__);
615 }
616 
FuzzWpaInterfaceP2pAddService(struct IWpaInterface * interface,const uint8_t * rawData)617 void FuzzWpaInterfaceP2pAddService(struct IWpaInterface *interface, const uint8_t *rawData)
618 {
619     const char *ifName = reinterpret_cast<const char *>(rawData);
620     struct HdiP2pServiceInfo info = {0};
621     (void)memset_s(&info, sizeof(struct HdiP2pServiceInfo), 0, sizeof(struct HdiP2pServiceInfo));
622     info.mode = 0;
623     info.version = 0;
624     const int nameLen = 32;
625     const int paramLen = 1;
626     info.nameLen = nameLen;
627     info.queryLen = paramLen;
628     info.respLen = paramLen;
629     info.name = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * nameLen));
630     info.query = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * paramLen));
631     info.resp = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * paramLen));
632     if (info.name == nullptr || info.query == nullptr || info.resp == nullptr) {
633         HDF_LOGI("%{public}s: OsalMemCalloc fail", __FUNCTION__);
634         return;
635     }
636     strcpy_s((char *)info.name, sizeof(info.name), "p2p0");
637 
638     interface->P2pAddService(interface, ifName, &info);
639     OsalMemFree(info.name);
640     OsalMemFree(info.query);
641     OsalMemFree(info.resp);
642     HDF_LOGI("%{public}s: success", __FUNCTION__);
643 }
644 
FuzzWpaInterfaceP2pRemoveService(struct IWpaInterface * interface,const uint8_t * rawData)645 void FuzzWpaInterfaceP2pRemoveService(struct IWpaInterface *interface, const uint8_t *rawData)
646 {
647     const char *ifName = reinterpret_cast<const char *>(rawData);
648     struct HdiP2pServiceInfo info = {0};
649     (void)memset_s(&info, sizeof(struct HdiP2pServiceInfo), 0, sizeof(struct HdiP2pServiceInfo));
650     info.mode = 0;
651     info.version = 0;
652     const int nameLen = 32;
653     const int paramLen = 1;
654     info.nameLen = nameLen;
655     info.queryLen = paramLen;
656     info.respLen = paramLen;
657     info.name = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * nameLen));
658     info.query = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * paramLen));
659     info.resp = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * paramLen));
660     if (info.name == nullptr || info.query == nullptr || info.resp == nullptr) {
661         HDF_LOGI("%{public}s: OsalMemCalloc fail", __FUNCTION__);
662         return;
663     }
664     strcpy_s((char *)info.name, sizeof(info.name), "p2p0");
665 
666     interface->P2pRemoveService(interface, ifName, &info);
667     OsalMemFree(info.name);
668     OsalMemFree(info.query);
669     OsalMemFree(info.resp);
670     HDF_LOGI("%{public}s: success", __FUNCTION__);
671 }
672 
FuzzWpaInterfaceP2pStopFind(struct IWpaInterface * interface,const uint8_t * rawData)673 void FuzzWpaInterfaceP2pStopFind(struct IWpaInterface *interface, const uint8_t *rawData)
674 {
675     const char *ifName = reinterpret_cast<const char *>(rawData);
676 
677     interface->P2pStopFind(interface, ifName);
678     HDF_LOGI("%{public}s: success", __FUNCTION__);
679 }
680 
FuzzWpaInterfaceP2pFlush(struct IWpaInterface * interface,const uint8_t * rawData)681 void FuzzWpaInterfaceP2pFlush(struct IWpaInterface *interface, const uint8_t *rawData)
682 {
683     const char *ifName = reinterpret_cast<const char *>(rawData);
684 
685     interface->P2pFlush(interface, ifName);
686     HDF_LOGI("%{public}s: success", __FUNCTION__);
687 }
688 
FuzzWpaInterfaceP2pFlushService(struct IWpaInterface * interface,const uint8_t * rawData)689 void FuzzWpaInterfaceP2pFlushService(struct IWpaInterface *interface, const uint8_t *rawData)
690 {
691     const char *ifName = reinterpret_cast<const char *>(rawData);
692 
693     interface->P2pFlushService(interface, ifName);
694     HDF_LOGI("%{public}s: success", __FUNCTION__);
695 }
696 
FuzzWpaInterfaceP2pRemoveNetwork(struct IWpaInterface * interface,const uint8_t * rawData)697 void FuzzWpaInterfaceP2pRemoveNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
698 {
699     const char *ifName = reinterpret_cast<const char *>(rawData);
700     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
701 
702     interface->P2pRemoveNetwork(interface, ifName, networkId);
703     HDF_LOGI("%{public}s: success", __FUNCTION__);
704 }
705 
FuzzWpaInterfaceP2pSetGroupConfig(struct IWpaInterface * interface,const uint8_t * rawData)706 void FuzzWpaInterfaceP2pSetGroupConfig(struct IWpaInterface *interface, const uint8_t *rawData)
707 {
708     const char *ifName = reinterpret_cast<const char *>(rawData);
709     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
710     const char *name = reinterpret_cast<const char *>(rawData);
711     const char *value = reinterpret_cast<const char *>(rawData);
712 
713     interface->P2pSetGroupConfig(interface, ifName, networkId, name, value);
714     HDF_LOGI("%{public}s: success", __FUNCTION__);
715 }
716 
FuzzWpaInterfaceP2pInvite(struct IWpaInterface * interface,const uint8_t * rawData)717 void FuzzWpaInterfaceP2pInvite(struct IWpaInterface *interface, const uint8_t *rawData)
718 {
719     const char *ifName = reinterpret_cast<const char *>(rawData);
720     const char *peerBssid = reinterpret_cast<const char *>(rawData);
721     const char *goBssid = reinterpret_cast<const char *>(rawData);
722 
723     interface->P2pInvite(interface, ifName, peerBssid, goBssid);
724     HDF_LOGI("%{public}s: success", __FUNCTION__);
725 }
726 
FuzzWpaInterfaceP2pReinvoke(struct IWpaInterface * interface,const uint8_t * rawData)727 void FuzzWpaInterfaceP2pReinvoke(struct IWpaInterface *interface, const uint8_t *rawData)
728 {
729     const char *ifName = reinterpret_cast<const char *>(rawData);
730     const char *bssid = reinterpret_cast<const char *>(rawData);
731     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
732 
733     interface->P2pReinvoke(interface, ifName, networkId, bssid);
734     HDF_LOGI("%{public}s: success", __FUNCTION__);
735 }
736 
FuzzWpaInterfaceP2pGetDeviceAddress(struct IWpaInterface * interface,const uint8_t * rawData)737 void FuzzWpaInterfaceP2pGetDeviceAddress(struct IWpaInterface *interface, const uint8_t *rawData)
738 {
739     const char *ifName = reinterpret_cast<const char *>(rawData);
740     char deviceAddress[32] = {0};
741     uint32_t deviceAddressLen = *const_cast<uint32_t *>(reinterpret_cast<const uint32_t *>(rawData));
742 
743     interface->P2pGetDeviceAddress(interface, ifName, deviceAddress, deviceAddressLen);
744     HDF_LOGI("%{public}s: success", __FUNCTION__);
745 }
746 
FuzzWpaInterfaceP2pReqServiceDiscovery(struct IWpaInterface * interface,const uint8_t * rawData)747 void FuzzWpaInterfaceP2pReqServiceDiscovery(struct IWpaInterface *interface, const uint8_t *rawData)
748 {
749     const char *ifName = reinterpret_cast<const char *>(rawData);
750     char *replyDisc = static_cast<char *>(calloc(REPLY_SIZE, sizeof(char)));
751     if (replyDisc == nullptr) {
752         return;
753     }
754     uint32_t replyDiscLen = REPLY_SIZE;
755     struct HdiP2pReqService reqService;
756     (void)memset_s(&reqService, sizeof(struct HdiP2pReqService), 0, sizeof(struct HdiP2pReqService));
757     reqService.bssidLen = ETH_ADDR_LEN;
758     reqService.bssid = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * (reqService.bssidLen)));
759     if (reqService.bssid == nullptr) {
760         free(replyDisc);
761         return;
762     }
763     reqService.bssid[0] = 0x12;
764     reqService.bssid[1] = 0x34;
765     reqService.bssid[2] = 0x56;
766     reqService.bssid[3] = 0x78;
767     reqService.bssid[4] = 0xab;
768     reqService.bssid[5] = 0xcd;
769 
770     interface->P2pReqServiceDiscovery(interface, ifName, &reqService, replyDisc, replyDiscLen);
771     free(replyDisc);
772     OsalMemFree(reqService.bssid);
773     HDF_LOGI("%{public}s: success", __FUNCTION__);
774 }
775 
FuzzWpaInterfaceP2pCancelServiceDiscovery(struct IWpaInterface * interface,const uint8_t * rawData)776 void FuzzWpaInterfaceP2pCancelServiceDiscovery(struct IWpaInterface *interface, const uint8_t *rawData)
777 {
778     const char *ifName = reinterpret_cast<const char *>(rawData);
779     const char *id = reinterpret_cast<const char *>(rawData);
780 
781     interface->P2pCancelServiceDiscovery(interface, ifName, id);
782     HDF_LOGI("%{public}s: success", __FUNCTION__);
783 }
784 
FuzzWpaInterfaceP2pRespServerDiscovery(struct IWpaInterface * interface,const uint8_t * rawData)785 void FuzzWpaInterfaceP2pRespServerDiscovery(struct IWpaInterface *interface, const uint8_t *rawData)
786 {
787     const char *ifName = reinterpret_cast<const char *>(rawData);
788     struct HdiP2pServDiscReqInfo info;
789     (void)memset_s(&info, sizeof(struct HdiP2pServDiscReqInfo), 0, sizeof(struct HdiP2pServDiscReqInfo));
790 
791     interface->P2pRespServerDiscovery(interface, ifName, &info);
792     HDF_LOGI("%{public}s: success", __FUNCTION__);
793 }
794 
FuzzWpaInterfaceP2pConnect(struct IWpaInterface * interface,const uint8_t * rawData)795 void FuzzWpaInterfaceP2pConnect(struct IWpaInterface *interface, const uint8_t *rawData)
796 {
797     const char *ifName = reinterpret_cast<const char *>(rawData);
798     struct HdiP2pConnectInfo info;
799     (void)memset_s(&info, sizeof(struct HdiP2pConnectInfo), 0, sizeof(struct HdiP2pConnectInfo));
800     char *replyPin = static_cast<char *>(calloc(REPLY_SIZE, sizeof(char)));
801     if (replyPin == nullptr) {
802         return;
803     }
804     uint32_t replyPinLen = REPLY_SIZE;
805 
806     interface->P2pConnect(interface, ifName, &info, replyPin, replyPinLen);
807     free(replyPin);
808     HDF_LOGI("%{public}s: success", __FUNCTION__);
809 }
810 
FuzzWpaInterfaceP2pHid2dConnect(struct IWpaInterface * interface,const uint8_t * rawData)811 void FuzzWpaInterfaceP2pHid2dConnect(struct IWpaInterface *interface, const uint8_t *rawData)
812 {
813     const int macAddrIndexOne = 0;
814     const int macAddrIndexTwo = 1;
815     const int macAddrIndexThree = 2;
816     const int macAddrIndexFour = 3;
817     const int macAddrIndexFive = 4;
818     const int macAddrIndexSix = 5;
819     const char *ifName = reinterpret_cast<const char *>(rawData);
820     struct HdiHid2dConnectInfo info;
821     (void)memset_s(&info, sizeof(struct HdiHid2dConnectInfo), 0, sizeof(struct HdiHid2dConnectInfo));
822     info.bssidLen = ETH_ADDR_LEN;
823     info.bssid = static_cast<uint8_t *>(OsalMemCalloc(sizeof(uint8_t) * (info.bssidLen)));
824     if (info.bssid == nullptr) {
825         return;
826     }
827     info.bssid[macAddrIndexOne] = 0x00;
828     info.bssid[macAddrIndexTwo] = 0x00;
829     info.bssid[macAddrIndexThree] = 0x00;
830     info.bssid[macAddrIndexFour] = 0x00;
831     info.bssid[macAddrIndexFive] = 0x00;
832     info.bssid[macAddrIndexSix] = 0x00;
833     interface->P2pHid2dConnect(interface, ifName, &info);
834     OsalMemFree(info.bssid);
835     HDF_LOGI("%{public}s: success", __FUNCTION__);
836 }
837 
FuzzWpaInterfaceP2pSetServDiscExternal(struct IWpaInterface * interface,const uint8_t * rawData)838 void FuzzWpaInterfaceP2pSetServDiscExternal(struct IWpaInterface *interface, const uint8_t *rawData)
839 {
840     const char *ifName = reinterpret_cast<const char *>(rawData);
841     int32_t mode = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
842 
843     interface->P2pSetServDiscExternal(interface, ifName, mode);
844     HDF_LOGI("%{public}s: success", __FUNCTION__);
845 }
846 
FuzzWpaInterfaceP2pRemoveGroup(struct IWpaInterface * interface,const uint8_t * rawData)847 void FuzzWpaInterfaceP2pRemoveGroup(struct IWpaInterface *interface, const uint8_t *rawData)
848 {
849     const char *ifName = reinterpret_cast<const char *>(rawData);
850     const char *groupName = reinterpret_cast<const char *>(rawData);
851 
852     interface->P2pRemoveGroup(interface, ifName, groupName);
853     HDF_LOGI("%{public}s: success", __FUNCTION__);
854 }
855 
FuzzWpaInterfaceP2pCancelConnect(struct IWpaInterface * interface,const uint8_t * rawData)856 void FuzzWpaInterfaceP2pCancelConnect(struct IWpaInterface *interface, const uint8_t *rawData)
857 {
858     const char *ifName = reinterpret_cast<const char *>(rawData);
859 
860     interface->P2pCancelConnect(interface, ifName);
861     HDF_LOGI("%{public}s: success", __FUNCTION__);
862 }
863 
FuzzWpaInterfaceP2pGetGroupConfig(struct IWpaInterface * interface,const uint8_t * rawData)864 void FuzzWpaInterfaceP2pGetGroupConfig(struct IWpaInterface *interface, const uint8_t *rawData)
865 {
866     const char *ifName = reinterpret_cast<const char *>(rawData);
867     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
868     const char *param = reinterpret_cast<const char *>(rawData);
869     char value[32] = {0};
870     uint32_t valueLen = *const_cast<uint32_t *>(reinterpret_cast<const uint32_t *>(rawData));
871 
872     interface->P2pGetGroupConfig(interface, ifName, networkId, param, value, valueLen);
873     HDF_LOGI("%{public}s: success", __FUNCTION__);
874 }
875 
FuzzWpaInterfaceP2pAddNetwork(struct IWpaInterface * interface,const uint8_t * rawData)876 void FuzzWpaInterfaceP2pAddNetwork(struct IWpaInterface *interface, const uint8_t *rawData)
877 {
878     const char *ifName = reinterpret_cast<const char *>(rawData);
879     int32_t networkId = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
880 
881     interface->P2pAddNetwork(interface, ifName, &networkId);
882     HDF_LOGI("%{public}s: success", __FUNCTION__);
883 }
884 
FuzzWpaInterfaceP2pGetPeer(struct IWpaInterface * interface,const uint8_t * rawData)885 void FuzzWpaInterfaceP2pGetPeer(struct IWpaInterface *interface, const uint8_t *rawData)
886 {
887     const char *ifName = reinterpret_cast<const char *>(rawData);
888     const char *bssid = reinterpret_cast<const char *>(rawData);
889     struct HdiP2pDeviceInfo info;
890     (void)memset_s(&info, sizeof(struct HdiP2pDeviceInfo), 0, sizeof(struct HdiP2pDeviceInfo));
891 
892     interface->P2pGetPeer(interface, ifName, bssid, &info);
893     HDF_LOGI("%{public}s: success", __FUNCTION__);
894 }
895 
FuzzWpaInterfaceP2pGetGroupCapability(struct IWpaInterface * interface,const uint8_t * rawData)896 void FuzzWpaInterfaceP2pGetGroupCapability(struct IWpaInterface *interface, const uint8_t *rawData)
897 {
898     const char *ifName = reinterpret_cast<const char *>(rawData);
899     const char *bssid = reinterpret_cast<const char *>(rawData);
900     int32_t cap = *const_cast<int32_t *>(reinterpret_cast<const int32_t *>(rawData));
901 
902     interface->P2pGetGroupCapability(interface, ifName, bssid, &cap);
903     HDF_LOGI("%{public}s: success", __FUNCTION__);
904 }
905 
FuzzWpaInterfaceP2pListNetworks(struct IWpaInterface * interface,const uint8_t * rawData)906 void FuzzWpaInterfaceP2pListNetworks(struct IWpaInterface *interface, const uint8_t *rawData)
907 {
908     const char *ifName = reinterpret_cast<const char *>(rawData);
909     struct HdiP2pNetworkList infoList;
910     (void)memset_s(&infoList, sizeof(struct HdiP2pNetworkList), 0, sizeof(struct HdiP2pNetworkList));
911 
912     interface->P2pListNetworks(interface, ifName, &infoList);
913     HDF_LOGI("%{public}s: success", __FUNCTION__);
914 }
915 
FuzzWpaInterfaceP2pSaveConfig(struct IWpaInterface * interface,const uint8_t * rawData)916 void FuzzWpaInterfaceP2pSaveConfig(struct IWpaInterface *interface, const uint8_t *rawData)
917 {
918     const char *ifName = reinterpret_cast<const char *>(rawData);
919 
920     interface->P2pSaveConfig(interface, ifName);
921     HDF_LOGI("%{public}s: success", __FUNCTION__);
922 }
923