1 /* 2 * Copyright (c) 2023 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 <cstddef> 17 #include <cstdint> 18 #include "matched_number_info.h" 19 #include "phone_number_matched.h" 20 #include "phone_number_rule.h" 21 #include "phonenumbermatched_fuzzer.h" 22 23 namespace OHOS { DoSomethingInterestingWithMyAPI(const uint8_t* data, size_t size)24 bool DoSomethingInterestingWithMyAPI(const uint8_t* data, size_t size) 25 { 26 using namespace Global::I18n; 27 if (size < 1) { 28 return false; 29 } 30 std::string input(reinterpret_cast<const char*>(data), size); 31 32 PhoneNumberMatched* phoneNumberMatched = new PhoneNumberMatched(input); 33 icu::UnicodeString message(input.c_str()); 34 phoneNumberMatched->GetMatchedPhoneNumber(message); 35 36 PhoneNumberRule phoneNumberRule(input); 37 phoneNumberRule.Init(); 38 phoneNumberRule.GetBorderRules(); 39 phoneNumberRule.GetCodesRules(); 40 phoneNumberRule.GetPositiveRules(); 41 phoneNumberRule.GetNegativeRules(); 42 phoneNumberRule.GetFindRules(); 43 MatchedNumberInfo* matchedNumberInfo = new MatchedNumberInfo(); 44 icu::UnicodeString content(input.c_str()); 45 MatchedNumberInfo* matchedNumberInfo2 = new MatchedNumberInfo(size, size, content); 46 47 matchedNumberInfo2->SetBegin(size); 48 matchedNumberInfo2->GetBegin(); 49 matchedNumberInfo2->SetEnd(size); 50 matchedNumberInfo2->GetEnd(); 51 matchedNumberInfo2->SetContent(content); 52 matchedNumberInfo2->GetContent(); 53 bool flag = *matchedNumberInfo < *matchedNumberInfo2; 54 delete phoneNumberMatched; 55 delete matchedNumberInfo2; 56 delete matchedNumberInfo; 57 return flag; 58 } 59 } 60 61 /* Fuzzer entry point */ 62 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) 63 { 64 /* Run your code on data */ 65 OHOS::DoSomethingInterestingWithMyAPI(data, size); 66 return 0; 67 } 68 69