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 }