• 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 "singlekvstore_fuzzer.h"
17 
18 #include <string>
19 #include <sys/stat.h>
20 #include <vector>
21 
22 #include "distributed_kv_data_manager.h"
23 #include "fuzzer/FuzzedDataProvider.h"
24 #include "store_errno.h"
25 
26 using namespace OHOS;
27 using namespace OHOS::DistributedKv;
28 
29 namespace OHOS {
30 static std::shared_ptr<SingleKvStore> singleKvStore_ = nullptr;
31 
32 class DeviceObserverTestImpl : public KvStoreObserver {
33 public:
34     DeviceObserverTestImpl();
~DeviceObserverTestImpl()35     ~DeviceObserverTestImpl()
36     {
37     }
38     DeviceObserverTestImpl(const DeviceObserverTestImpl &) = delete;
39     DeviceObserverTestImpl &operator=(const DeviceObserverTestImpl &) = delete;
40     DeviceObserverTestImpl(DeviceObserverTestImpl &&) = delete;
41     DeviceObserverTestImpl &operator=(DeviceObserverTestImpl &&) = delete;
42 
43     void OnChange(const ChangeNotification &changeNotification);
44 };
45 
OnChange(const ChangeNotification & changeNotification)46 void DeviceObserverTestImpl::OnChange(const ChangeNotification &changeNotification)
47 {
48 }
49 
DeviceObserverTestImpl()50 DeviceObserverTestImpl::DeviceObserverTestImpl()
51 {
52 }
53 
54 class DeviceSyncCallbackTestImpl : public KvStoreSyncCallback {
55 public:
56     void SyncCompleted(const std::map<std::string, Status> &results);
57     void SyncCompleted(const std::map<std::string, Status> &results, uint64_t sequenceId);
58 };
59 
SyncCompleted(const std::map<std::string,Status> & results)60 void DeviceSyncCallbackTestImpl::SyncCompleted(const std::map<std::string, Status> &results)
61 {
62 }
63 
SyncCompleted(const std::map<std::string,Status> & results,uint64_t sequenceId)64 void DeviceSyncCallbackTestImpl::SyncCompleted(const std::map<std::string, Status> &results, uint64_t sequenceId)
65 {
66 }
67 
SetUpTestCase(void)68 void SetUpTestCase(void)
69 {
70     DistributedKvDataManager manager;
71     Options options = {
72         .createIfMissing = true,
73         .encrypt = false,
74         .autoSync = true,
75         .securityLevel = S1,
76         .kvStoreType = KvStoreType::SINGLE_VERSION
77     };
78     options.area = EL1;
79     AppId appId = { "kvstorefuzzertest" };
80     options.baseDir = std::string("/data/service/el1/public/database/") + appId.appId;
81     /* define kvstore(database) name. */
82     StoreId storeId = { "fuzzer_single" };
83     mkdir(options.baseDir.c_str(), (S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH));
84     /* [create and] open and initialize kvstore instance. */
85     manager.GetSingleKvStore(options, appId, storeId, singleKvStore_);
86 }
87 
TearDown(void)88 void TearDown(void)
89 {
90     (void)remove("/data/service/el1/public/database/singlekvstorefuzzertest/key");
91     (void)remove("/data/service/el1/public/database/singlekvstorefuzzertest/kvdb");
92     (void)remove("/data/service/el1/public/database/singlekvstorefuzzertest");
93 }
94 
PutFuzz(FuzzedDataProvider & provider)95 void PutFuzz(FuzzedDataProvider &provider)
96 {
97     std::string skey = provider.ConsumeRandomLengthString();
98     std::string svalue = provider.ConsumeRandomLengthString();
99     Key key = { skey };
100     Value val = { svalue };
101     singleKvStore_->Put(key, val);
102     singleKvStore_->Delete(key);
103 }
104 
PutBatchFuzz(FuzzedDataProvider & provider)105 void PutBatchFuzz(FuzzedDataProvider &provider)
106 {
107     std::string skey = provider.ConsumeRandomLengthString();
108     std::string svalue = provider.ConsumeRandomLengthString();
109     std::vector<Entry> entries;
110     std::vector<Key> keys;
111     Entry entry1;
112     Entry entry2;
113     Entry entry3;
114     entry1.key = { skey + "test_key1" };
115     entry1.value = { svalue + "test_val1" };
116     entry2.key = { skey + "test_key2" };
117     entry2.value = { svalue + "test_val2" };
118     entry3.key = { skey + "test_key3" };
119     entry3.value = { svalue + "test_val3" };
120     entries.push_back(entry1);
121     entries.push_back(entry2);
122     entries.push_back(entry3);
123     keys.push_back(entry1.key);
124     keys.push_back(entry2.key);
125     keys.push_back(entry3.key);
126     singleKvStore_->PutBatch(entries);
127     singleKvStore_->DeleteBatch(keys);
128 }
129 
GetFuzz(FuzzedDataProvider & provider)130 void GetFuzz(FuzzedDataProvider &provider)
131 {
132     std::string skey = provider.ConsumeRandomLengthString();
133     std::string svalue = provider.ConsumeRandomLengthString();
134     Key key = { skey };
135     Value val = { svalue };
136     Value val1;
137     singleKvStore_->Put(key, val);
138     singleKvStore_->Get(key, val1);
139     singleKvStore_->Delete(key);
140 }
141 
GetEntriesFuzz1(FuzzedDataProvider & provider)142 void GetEntriesFuzz1(FuzzedDataProvider &provider)
143 {
144     std::string prefix = provider.ConsumeRandomLengthString();
145     std::string keys = "test_";
146     size_t sum = 10;
147     std::vector<Entry> results;
148     for (size_t i = 0; i < sum; i++) {
149         singleKvStore_->Put(prefix + keys + std::to_string(i), { keys + std::to_string(i) });
150     }
151     singleKvStore_->GetEntries(prefix, results);
152     for (size_t i = 0; i < sum; i++) {
153         singleKvStore_->Delete(prefix + keys + std::to_string(i));
154     }
155 }
156 
GetEntriesFuzz2(FuzzedDataProvider & provider)157 void GetEntriesFuzz2(FuzzedDataProvider &provider)
158 {
159     std::string prefix = provider.ConsumeRandomLengthString();
160     DataQuery dataQuery;
161     dataQuery.KeyPrefix(prefix);
162     std::string keys = "test_";
163     std::vector<Entry> entries;
164     size_t sum = 10;
165     for (size_t i = 0; i < sum; i++) {
166         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
167     }
168     singleKvStore_->GetEntries(dataQuery, entries);
169     for (size_t i = 0; i < sum; i++) {
170         singleKvStore_->Delete(prefix + keys + std::to_string(i));
171     }
172 }
173 
SubscribeKvStoreFuzz(FuzzedDataProvider & provider)174 void SubscribeKvStoreFuzz(FuzzedDataProvider &provider)
175 {
176     std::string prefix = provider.ConsumeRandomLengthString();
177     DataQuery dataQuery;
178     dataQuery.KeyPrefix(prefix);
179     std::string keys = "test_";
180     size_t sum = 10;
181     for (size_t i = 0; i < sum; i++) {
182         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
183     }
184     auto observer = std::make_shared<DeviceObserverTestImpl>();
185     singleKvStore_->SubscribeKvStore(SubscribeType::SUBSCRIBE_TYPE_ALL, observer);
186     singleKvStore_->UnSubscribeKvStore(SubscribeType::SUBSCRIBE_TYPE_ALL, observer);
187     for (size_t i = 0; i < sum; i++) {
188         singleKvStore_->Delete(prefix + keys + std::to_string(i));
189     }
190 }
191 
SyncCallbackFuzz(FuzzedDataProvider & provider)192 void SyncCallbackFuzz(FuzzedDataProvider &provider)
193 {
194     auto syncCallback = std::make_shared<DeviceSyncCallbackTestImpl>();
195     singleKvStore_->RegisterSyncCallback(syncCallback);
196 
197     std::string prefix = provider.ConsumeRandomLengthString();
198     DataQuery dataQuery;
199     dataQuery.KeyPrefix(prefix);
200     std::string keys = "test_";
201     size_t sum = 10;
202     for (size_t i = 0; i < sum; i++) {
203         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
204     }
205 
206     std::map<std::string, Status> results;
207     syncCallback->SyncCompleted(results);
208     for (size_t i = 0; i < sum; i++) {
209         singleKvStore_->Delete(prefix + keys + std::to_string(i));
210     }
211     singleKvStore_->UnRegisterSyncCallback();
212 }
213 
SyncCallbackFuzz1(FuzzedDataProvider & provider)214 void SyncCallbackFuzz1(FuzzedDataProvider &provider)
215 {
216     auto syncCallback = std::make_shared<DeviceSyncCallbackTestImpl>();
217     singleKvStore_->RegisterSyncCallback(syncCallback);
218 
219     std::string prefix = provider.ConsumeRandomLengthString();
220     DataQuery dataQuery;
221     dataQuery.KeyPrefix(prefix);
222     std::string keys = "test_";
223     size_t sum = provider.ConsumeIntegralInRange<size_t>(0, 10);
224     for (size_t i = 0; i < sum; i++) {
225         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
226     }
227 
228     std::map<std::string, Status> results;
229     uint64_t sequenceId = provider.ConsumeIntegral<uint64_t>();
230     syncCallback->SyncCompleted(results, sequenceId);
231 
232     for (size_t i = 0; i < sum; i++) {
233         singleKvStore_->Delete(prefix + keys + std::to_string(i));
234     }
235     singleKvStore_->UnRegisterSyncCallback();
236 }
237 
GetResultSetFuzz1(FuzzedDataProvider & provider)238 void GetResultSetFuzz1(FuzzedDataProvider &provider)
239 {
240     std::string prefix = provider.ConsumeRandomLengthString();
241     std::string keys = "test_";
242     int position = provider.ConsumeIntegral<int>();
243     std::shared_ptr<KvStoreResultSet> resultSet;
244     size_t sum = 10;
245     for (size_t i = 0; i < sum; i++) {
246         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
247     }
248     auto status = singleKvStore_->GetResultSet(prefix, resultSet);
249     if (status != Status::SUCCESS || resultSet == nullptr) {
250         return;
251     }
252     resultSet->Move(position);
253     resultSet->MoveToPosition(position);
254     Entry entry;
255     resultSet->GetEntry(entry);
256     for (size_t i = 0; i < sum; i++) {
257         singleKvStore_->Delete(prefix + keys + std::to_string(i));
258     }
259 }
260 
GetResultSetFuzz2(FuzzedDataProvider & provider)261 void GetResultSetFuzz2(FuzzedDataProvider &provider)
262 {
263     std::string prefix = provider.ConsumeRandomLengthString();
264     DataQuery dataQuery;
265     dataQuery.KeyPrefix(prefix);
266     std::string keys = "test_";
267     std::shared_ptr<KvStoreResultSet> resultSet;
268     size_t sum = 10;
269     for (size_t i = 0; i < sum; i++) {
270         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
271     }
272     singleKvStore_->GetResultSet(dataQuery, resultSet);
273     singleKvStore_->CloseResultSet(resultSet);
274     for (size_t i = 0; i < sum; i++) {
275         singleKvStore_->Delete(prefix + keys + std::to_string(i));
276     }
277 }
278 
GetResultSetFuzz3(FuzzedDataProvider & provider)279 void GetResultSetFuzz3(FuzzedDataProvider &provider)
280 {
281     std::string prefix = provider.ConsumeRandomLengthString();
282     DataQuery dataQuery;
283     dataQuery.KeyPrefix(prefix);
284     std::string keys = "test_";
285     std::shared_ptr<KvStoreResultSet> resultSet;
286     size_t sum = 10;
287     for (size_t i = 0; i < sum; i++) {
288         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
289     }
290     singleKvStore_->GetResultSet(dataQuery, resultSet);
291     auto status = singleKvStore_->GetResultSet(prefix, resultSet);
292     if (status != Status::SUCCESS || resultSet == nullptr) {
293         return;
294     }
295     int cnt = resultSet->GetCount();
296     if (cnt != sum) {
297         return;
298     }
299     resultSet->GetPosition();
300     resultSet->IsBeforeFirst();
301     resultSet->IsFirst();
302     resultSet->MoveToPrevious();
303     resultSet->IsBeforeFirst();
304     resultSet->IsFirst();
305     while (resultSet->MoveToNext()) {
306         Entry entry;
307         resultSet->GetEntry(entry);
308     }
309     Entry entry;
310     resultSet->GetEntry(entry);
311     resultSet->IsLast();
312     resultSet->IsAfterLast();
313     resultSet->MoveToNext();
314     resultSet->IsLast();
315     resultSet->IsAfterLast();
316     resultSet->Move(1);
317     resultSet->IsLast();
318     resultSet->IsAfterLast();
319     resultSet->MoveToFirst();
320     resultSet->GetEntry(entry);
321     resultSet->MoveToLast();
322     resultSet->GetEntry(entry);
323     for (size_t i = 0; i < sum; i++) {
324         singleKvStore_->Delete(prefix + keys + std::to_string(i));
325     }
326 }
327 
GetCountFuzz1(FuzzedDataProvider & provider)328 void GetCountFuzz1(FuzzedDataProvider &provider)
329 {
330     int count;
331     std::string prefix = provider.ConsumeRandomLengthString();
332     DataQuery query;
333     query.KeyPrefix(prefix);
334     std::string keys = "test_";
335     size_t sum = 10;
336     for (size_t i = 0; i < sum; i++) {
337         singleKvStore_->Put(prefix + keys + std::to_string(i), keys + std::to_string(i));
338     }
339     singleKvStore_->GetCount(query, count);
340     for (size_t i = 0; i < sum; i++) {
341         singleKvStore_->Delete(prefix + keys + std::to_string(i));
342     }
343 }
344 
GetCountFuzz2(FuzzedDataProvider & provider)345 void GetCountFuzz2(FuzzedDataProvider &provider)
346 {
347     int count;
348     size_t sum = 10;
349     std::vector<std::string> keys;
350     std::string prefix = provider.ConsumeRandomLengthString();
351     for (size_t i = 0; i < sum; i++) {
352         keys.push_back(prefix);
353     }
354     DataQuery query;
355     query.InKeys(keys);
356     std::string skey = "test_";
357     for (size_t i = 0; i < sum; i++) {
358         singleKvStore_->Put(prefix + skey + std::to_string(i), skey + std::to_string(i));
359     }
360     singleKvStore_->GetCount(query, count);
361     for (size_t i = 0; i < sum; i++) {
362         singleKvStore_->Delete(prefix + skey + std::to_string(i));
363     }
364 }
365 
RemoveDeviceDataFuzz(FuzzedDataProvider & provider)366 void RemoveDeviceDataFuzz(FuzzedDataProvider &provider)
367 {
368     size_t sum = 10;
369     std::string deviceId = provider.ConsumeRandomLengthString();
370     std::vector<Entry> input;
371     auto cmp = [](const Key &entry, const Key &sentry) { return entry.Data() < sentry.Data(); };
372     std::map<Key, Value, decltype(cmp)> dictionary(cmp);
373     for (size_t i = 0; i < sum; ++i) {
374         Entry entry;
375         entry.key = std::to_string(i).append("_k");
376         entry.value = std::to_string(i).append("_v");
377         dictionary[entry.key] = entry.value;
378         input.push_back(entry);
379     }
380     singleKvStore_->PutBatch(input);
381     singleKvStore_->RemoveDeviceData(deviceId);
382     singleKvStore_->RemoveDeviceData("");
383 
384     for (size_t i = 0; i < sum; i++) {
385         singleKvStore_->Delete(std::to_string(i).append("_k"));
386     }
387 }
388 
GetSecurityLevelFuzz(FuzzedDataProvider & provider)389 void GetSecurityLevelFuzz(FuzzedDataProvider &provider)
390 {
391     size_t sum = 10;
392     std::vector<std::string> keys;
393     std::string prefix = provider.ConsumeRandomLengthString();
394     for (size_t i = 0; i < sum; i++) {
395         keys.push_back(prefix);
396     }
397     std::string skey = "test_";
398     for (size_t i = 0; i < sum; i++) {
399         singleKvStore_->Put(prefix + skey + std::to_string(i), skey + std::to_string(i));
400     }
401     SecurityLevel securityLevel;
402     singleKvStore_->GetSecurityLevel(securityLevel);
403     for (size_t i = 0; i < sum; i++) {
404         singleKvStore_->Delete(prefix + skey + std::to_string(i));
405     }
406 }
407 
SyncFuzz1(FuzzedDataProvider & provider)408 void SyncFuzz1(FuzzedDataProvider &provider)
409 {
410     size_t sum = 10;
411     std::string skey = "test_";
412     for (size_t i = 0; i < sum; i++) {
413         singleKvStore_->Put(skey + std::to_string(i), skey + std::to_string(i));
414     }
415     std::string deviceId = provider.ConsumeRandomLengthString();
416     std::vector<std::string> deviceIds = { deviceId };
417     uint32_t allowedDelayMs = 200;
418     singleKvStore_->Sync(deviceIds, SyncMode::PUSH, allowedDelayMs);
419     for (size_t i = 0; i < sum; i++) {
420         singleKvStore_->Delete(skey + std::to_string(i));
421     }
422 }
423 
SyncFuzz2(FuzzedDataProvider & provider)424 void SyncFuzz2(FuzzedDataProvider &provider)
425 {
426     size_t sum = 10;
427     std::string skey = "test_";
428     for (size_t i = 0; i < sum; i++) {
429         singleKvStore_->Put(skey + std::to_string(i), skey + std::to_string(i));
430     }
431     std::string deviceId = provider.ConsumeRandomLengthString();
432     std::vector<std::string> deviceIds = { deviceId };
433     DataQuery dataQuery;
434     dataQuery.KeyPrefix("name");
435     singleKvStore_->Sync(deviceIds, SyncMode::PULL, dataQuery, nullptr);
436     for (size_t i = 0; i < sum; i++) {
437         singleKvStore_->Delete(skey + std::to_string(i));
438     }
439 }
440 
SyncParamFuzz(FuzzedDataProvider & provider)441 void SyncParamFuzz(FuzzedDataProvider &provider)
442 {
443     size_t sum = 10;
444     std::vector<std::string> keys;
445     std::string prefix = provider.ConsumeRandomLengthString();
446     for (size_t i = 0; i < sum; i++) {
447         keys.push_back(prefix);
448     }
449     std::string skey = "test_";
450     for (size_t i = 0; i < sum; i++) {
451         singleKvStore_->Put(prefix + skey + std::to_string(i), skey + std::to_string(i));
452     }
453 
454     KvSyncParam syncParam { 500 };
455     singleKvStore_->SetSyncParam(syncParam);
456 
457     KvSyncParam syncParamRet;
458     singleKvStore_->GetSyncParam(syncParamRet);
459 
460     for (size_t i = 0; i < sum; i++) {
461         singleKvStore_->Delete(prefix + skey + std::to_string(i));
462     }
463 }
464 
SetCapabilityEnabledFuzz(FuzzedDataProvider & provider)465 void SetCapabilityEnabledFuzz(FuzzedDataProvider &provider)
466 {
467     size_t sum = 10;
468     std::vector<std::string> keys;
469     std::string prefix = provider.ConsumeRandomLengthString();
470     for (size_t i = 0; i < sum; i++) {
471         keys.push_back(prefix);
472     }
473     std::string skey = "test_";
474     for (size_t i = 0; i < sum; i++) {
475         singleKvStore_->Put(prefix + skey + std::to_string(i), skey + std::to_string(i));
476     }
477 
478     singleKvStore_->SetCapabilityEnabled(true);
479     singleKvStore_->SetCapabilityEnabled(false);
480 
481     for (size_t i = 0; i < sum; i++) {
482         singleKvStore_->Delete(prefix + skey + std::to_string(i));
483     }
484 }
485 
SetCapabilityRangeFuzz(FuzzedDataProvider & provider)486 void SetCapabilityRangeFuzz(FuzzedDataProvider &provider)
487 {
488     std::string label = provider.ConsumeRandomLengthString();
489     std::vector<std::string> local = { label + "_local1", label + "_local2" };
490     std::vector<std::string> remote = { label + "_remote1", label + "_remote2" };
491     singleKvStore_->SetCapabilityRange(local, remote);
492 }
493 
SubscribeWithQueryFuzz(FuzzedDataProvider & provider)494 void SubscribeWithQueryFuzz(FuzzedDataProvider &provider)
495 {
496     std::string deviceId = provider.ConsumeRandomLengthString();
497     std::vector<std::string> deviceIds = { deviceId + "_1", deviceId + "_2" };
498     DataQuery dataQuery;
499     dataQuery.KeyPrefix("name");
500     singleKvStore_->SubscribeWithQuery(deviceIds, dataQuery);
501     singleKvStore_->UnsubscribeWithQuery(deviceIds, dataQuery);
502 }
503 
UnSubscribeWithQueryFuzz(FuzzedDataProvider & provider)504 void UnSubscribeWithQueryFuzz(FuzzedDataProvider &provider)
505 {
506     std::string deviceId = provider.ConsumeRandomLengthString();
507     std::vector<std::string> deviceIds = { deviceId + "_1", deviceId + "_2" };
508     DataQuery dataQuery;
509     dataQuery.KeyPrefix("name");
510     singleKvStore_->UnsubscribeWithQuery(deviceIds, dataQuery);
511 }
512 
AsyncGetFuzz(FuzzedDataProvider & provider)513 void AsyncGetFuzz(FuzzedDataProvider &provider)
514 {
515     std::string strKey = provider.ConsumeRandomLengthString();
516     std::string strValue = provider.ConsumeRandomLengthString();
517     Key key = { strKey };
518     Value val = { strValue };
519     singleKvStore_->Put(key, val);
520     Value out;
521     std::function<void(Status, Value &&)> call = [](Status status, Value &&value) {};
522     std::string networkId = provider.ConsumeRandomLengthString();
523     singleKvStore_->Get(key, networkId, call);
524     singleKvStore_->Delete(key);
525 }
526 
AsyncGetEntriesFuzz(FuzzedDataProvider & provider)527 void AsyncGetEntriesFuzz(FuzzedDataProvider &provider)
528 {
529     std::string prefix = provider.ConsumeRandomLengthString();
530     std::string keys = "test_";
531     size_t sum = 10;
532     std::vector<Entry> results;
533     for (size_t i = 0; i < sum; i++) {
534         singleKvStore_->Put(prefix + keys + std::to_string(i), { keys + std::to_string(i) });
535     }
536     std::function<void(Status, std::vector<Entry> &&)> call = [](Status status, std::vector<Entry> &&entry) {};
537     std::string networkId = provider.ConsumeRandomLengthString();
538     singleKvStore_->GetEntries(prefix, networkId, call);
539     for (size_t i = 0; i < sum; i++) {
540         singleKvStore_->Delete(prefix + keys + std::to_string(i));
541     }
542 }
543 } // namespace OHOS
544 
545 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)546 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
547 {
548     /* Run your code on data */
549     FuzzedDataProvider provider(data, size);
550     OHOS::SetUpTestCase();
551     OHOS::PutFuzz(provider);
552     OHOS::PutBatchFuzz(provider);
553     OHOS::GetFuzz(provider);
554     OHOS::GetEntriesFuzz1(provider);
555     OHOS::GetEntriesFuzz2(provider);
556     OHOS::GetResultSetFuzz1(provider);
557     OHOS::GetResultSetFuzz2(provider);
558     OHOS::GetResultSetFuzz3(provider);
559     OHOS::GetCountFuzz1(provider);
560     OHOS::GetCountFuzz2(provider);
561     OHOS::SyncFuzz1(provider);
562     OHOS::SyncFuzz2(provider);
563     OHOS::SubscribeKvStoreFuzz(provider);
564     OHOS::RemoveDeviceDataFuzz(provider);
565     OHOS::GetSecurityLevelFuzz(provider);
566     OHOS::SyncCallbackFuzz(provider);
567     OHOS::SyncCallbackFuzz1(provider);
568     OHOS::SyncParamFuzz(provider);
569     OHOS::SetCapabilityEnabledFuzz(provider);
570     OHOS::SetCapabilityRangeFuzz(provider);
571     OHOS::SubscribeWithQueryFuzz(provider);
572     OHOS::UnSubscribeWithQueryFuzz(provider);
573     OHOS::AsyncGetFuzz(provider);
574     OHOS::AsyncGetEntriesFuzz(provider);
575     OHOS::TearDown();
576     return 0;
577 }