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#ifdef FEATURE_GEOCODE_SUPPORT 17#include "geoconvertproxy_fuzzer.h" 18 19#include "geo_convert_proxy.h" 20#include "geo_convert_service.h" 21#include "geo_coding_mock_info.h" 22#include "message_parcel.h" 23 24namespace OHOS { 25 using namespace OHOS::Location; 26 const int MIN_DATA_LEN = 3; 27 bool GeoConvertProxyFuzzerTest(const uint8_t* data, size_t size) 28 { 29 if (size < MIN_DATA_LEN) { 30 return true; 31 } 32 int index = 0; 33 sptr<GeoConvertService> service = 34 new (std::nothrow) GeoConvertService(); 35 std::shared_ptr<GeoConvertProxy> geoConvertProxy = 36 std::make_shared<GeoConvertProxy>(service); 37 MessageParcel request; 38 MessageParcel reply; 39 geoConvertProxy->IsGeoConvertAvailable(request); 40 geoConvertProxy->GetAddressByCoordinate(request, reply); 41 geoConvertProxy->GetAddressByLocationName(request, reply); 42 geoConvertProxy->EnableReverseGeocodingMock(); 43 geoConvertProxy->DisableReverseGeocodingMock(); 44 std::vector<std::shared_ptr<GeocodingMockInfo>> geocodingMockInfos; 45 geoConvertProxy->SetReverseGeocodingMockInfo(geocodingMockInfos); 46 geoConvertProxy->SendSimpleMsgAndParseResult(data[index++]); 47 geoConvertProxy->SendSimpleMsg(data[index++], request); 48 geoConvertProxy->SendMsgWithDataReply(data[index++], request, reply); 49 return true; 50 } 51} 52 53/* Fuzzer entry point */ 54extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) 55{ 56 /* Run your code on data */ 57 OHOS::GeoConvertProxyFuzzerTest(data, size); 58 return 0; 59} 60#endif // FEATURE_GEOCODE_SUPPORT