1/* 2 * Copyright (c) 2024 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 "mock_fuzz_util.h" 17 18#include "accesstoken_kit.h" 19#include "nativetoken_kit.h" 20#include "token_setproc.h" 21 22namespace OHOS { 23namespace DistributedSchedule { 24namespace { 25constexpr const char* FOUNDATION_PROCESS_NAME = "foundation"; 26} 27 28void FuzzUtil::MockPermission() 29{ 30 static const char *perms[] = { 31 "ohos.permission.ABILITY_BACKGROUND_COMMUNICATION", 32 "ohos.permission.ACCESS_SERVICE_DM", 33 "ohos.permission.ACCESS_SERVICE_DP", 34 "ohos.permission.DISTRIBUTED_DATASYNC", 35 "ohos.permission.INPUT_MONITORING", 36 "ohos.permission.GET_BUNDLE_INFO_PRIVILEGED", 37 "ohos.permission.GET_WIFI_INFO", 38 "ohos.permission.MANAGE_MISSIONS", 39 "ohos.permission.MANAGE_WIFI_CONNECTION", 40 "ohos.permission.MONITOR_DEVICE_NETWORK_STATE", 41 "ohos.permission.PUBLISH_SYSTEM_COMMON_EVENT", 42 "ohos.permission.REPORT_RESOURCE_SCHEDULE_EVENT", 43 "ohos.permission.RUNNING_STATE_OBSERVER", 44 "ohos.permission.START_INVISIBLE_ABILITY", 45 "ohos.permission.INPUT_MONITORING", 46 "ohos.permission.MANAGE_MISSIONS", 47 "ohos.permission.MANAGE_WIFI_CONNECTION", 48 "ohos.permission.MONITOR_DEVICE_NETWORK_STATE", 49 "ohos.permission.START_INVISIBLE_ABILITY" 50 }; 51 MockProcessAndPermission(FOUNDATION_PROCESS_NAME, perms, 1); 52} 53 54void FuzzUtil::MockProcessAndPermission(const char* processName, const char *perms[], int32_t permsNum) 55{ 56 uint64_t tokenId; 57 NativeTokenInfoParams infoInstance = { 58 .dcapsNum = 0, 59 .permsNum = permsNum, 60 .aclsNum = 0, 61 .dcaps = nullptr, 62 .perms = perms, 63 .acls = nullptr, 64 .processName = processName, 65 .aplStr = "system_core", 66 }; 67 tokenId = GetAccessTokenId(&infoInstance); 68 SetSelfTokenID(tokenId); 69 OHOS::Security::AccessToken::AccessTokenKit::ReloadNativeTokenInfo(); 70 setuid(0); 71} 72} 73}