From 8afbe2f2353939eaf1a2709b700361da10db0f8d Mon Sep 17 00:00:00 2001 From: wangfenging Date: Sat, 24 May 2025 11:02:58 +0800 Subject: [PATCH] Feature:modify new sandbox Ut cases Signed-off-by: wangfenging --- modules/sandbox/appspawn_sandbox.c | 28 +-- modules/sandbox/appspawn_sandbox.h | 2 +- modules/sandbox/sandbox_cfgvar.c | 3 +- modules/sandbox/sandbox_debug_mode.c | 10 +- modules/sandbox/sandbox_expand.c | 4 +- modules/sandbox/sandbox_manager.c | 4 +- test/mock/app_spawn_stub.h | 3 +- .../app_spawn_module_interface_test.cpp | 2 - .../app_spawn_sandbox_new_mount_test.cpp | 191 ++++++++++-------- .../app_spawn_sandbox_new_test.cpp | 74 ++++--- .../app_spawn_sandboxmgr_test.cpp | 4 +- test/unittest/app_spawn_test_helper.cpp | 2 +- test/unittest/app_spawn_test_helper.h | 2 - 13 files changed, 182 insertions(+), 147 deletions(-) diff --git a/modules/sandbox/appspawn_sandbox.c b/modules/sandbox/appspawn_sandbox.c index 610d3ee5..5f4f446c 100644 --- a/modules/sandbox/appspawn_sandbox.c +++ b/modules/sandbox/appspawn_sandbox.c @@ -157,17 +157,20 @@ SandboxContext *GetSandboxContext(void) return g_sandboxContext; } -void DeleteSandboxContext(SandboxContext *context) +void DeleteSandboxContext(SandboxContext **context) { - APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return); - if (context->rootPath) { - free(context->rootPath); - context->rootPath = NULL; + if (context == NULL || *context == NULL) { + return; + } + if ((*context)->rootPath) { + free((*context)->rootPath); + (*context)->rootPath = NULL; } - if (context == g_sandboxContext) { + if ((*context) == g_sandboxContext) { g_sandboxContext = NULL; } - free(context); + free((*context)); + *context = NULL; } static bool NeedNetworkIsolated(SandboxContext *context, const AppSpawningCtx *property) @@ -233,7 +236,6 @@ int InitSandboxContext(SandboxContext *context, const AppSpawnSandboxCfg *sandbo context->rootPath = strdup(rootPath); } if (context->rootPath == NULL) { - DeleteSandboxContext(context); return -1; } return 0; @@ -930,12 +932,12 @@ int StagedMountSystemConst(AppSpawnSandboxCfg *sandbox, const AppSpawningCtx *pr SandboxContext *context = GetSandboxContext(); APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return APPSPAWN_SYSTEM_ERROR); int ret = InitSandboxContext(context, sandbox, property, nwebspawn); - APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(context); + APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(&context); return ret); if (IsSandboxMounted(sandbox, "system-const", context->rootPath) && IsADFPermission(sandbox, property) != true) { APPSPAWN_LOGV("Sandbox system-const %{public}s has been mount", context->rootPath); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return 0; } @@ -947,7 +949,7 @@ int StagedMountSystemConst(AppSpawnSandboxCfg *sandbox, const AppSpawningCtx *pr ret = MountSandboxConfig(context, sandbox, section, operation); } SetSandboxMounted(sandbox, "system-const", context->rootPath); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return ret; } @@ -1212,7 +1214,7 @@ int MountSandboxConfigs(AppSpawnSandboxCfg *sandbox, const AppSpawningCtx *prope SandboxContext *context = GetSandboxContext(); APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return APPSPAWN_SYSTEM_ERROR); int ret = InitSandboxContext(context, sandbox, property, nwebspawn); - APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(context); + APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(&context); return ret); APPSPAWN_LOGV("Set sandbox config %{public}s sandboxNsFlags 0x%{public}x", @@ -1252,6 +1254,6 @@ int MountSandboxConfigs(AppSpawnSandboxCfg *sandbox, const AppSpawningCtx *prope #endif APPSPAWN_LOGV("Change root dir success %{public}s ", context->rootPath); } while (0); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return ret; } diff --git a/modules/sandbox/appspawn_sandbox.h b/modules/sandbox/appspawn_sandbox.h index 8abb7640..0cfd5558 100644 --- a/modules/sandbox/appspawn_sandbox.h +++ b/modules/sandbox/appspawn_sandbox.h @@ -356,7 +356,7 @@ __attribute__((always_inline)) inline bool CheckSandboxCtxPermissionFlagSet( * @return SandboxContext* */ SandboxContext *GetSandboxContext(void); -void DeleteSandboxContext(SandboxContext *context); +void DeleteSandboxContext(SandboxContext **context); /** * @brief defineMount Arg Template and operation diff --git a/modules/sandbox/sandbox_cfgvar.c b/modules/sandbox/sandbox_cfgvar.c index 6c88524f..f02f5827 100644 --- a/modules/sandbox/sandbox_cfgvar.c +++ b/modules/sandbox/sandbox_cfgvar.c @@ -358,7 +358,8 @@ int AddVariableReplaceHandler(const char *name, ReplaceVarHandler handler) node->replaceVar = handler; int ret = strcpy_s(node->name, len, name); APPSPAWN_CHECK(ret == 0, free(node); - return -1, "Failed to copy name %{public}s", name); + node = NULL; + return -1, "Failed to copy name %{public}s", name); OH_ListAddTail(&g_sandboxVarList, &node->node); return 0; } diff --git a/modules/sandbox/sandbox_debug_mode.c b/modules/sandbox/sandbox_debug_mode.c index d8c196ff..7953b34a 100644 --- a/modules/sandbox/sandbox_debug_mode.c +++ b/modules/sandbox/sandbox_debug_mode.c @@ -228,7 +228,7 @@ static int UninstallDebugSandbox(AppSpawnMgr *content, AppSpawningCtx *property) SandboxContext *context = GetSandboxContext(); // Need free after mounting each time APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return APPSPAWN_ERROR_UTILS_MEM_FAIL); ret = InitDebugSandboxContext(context, sandboxCfg, property, IsNWebSpawnMode(content)); - APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(context); + APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(&context); return ret); RemoveDebugDirInfo removeDebugDirInfo = { @@ -245,7 +245,7 @@ static int UninstallDebugSandbox(AppSpawnMgr *content, AppSpawningCtx *property) } APPSPAWN_CHECK_ONLY_LOG(ret == 0, "Failed to uninstall debug hap dir, ret: %{public}d", ret); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return 0; } @@ -304,7 +304,7 @@ static int SetDebugAutomicTmpRootPath(SandboxContext *context, const AppSpawning APPSPAWN_CHECK(ret > 0, return APPSPAWN_ERROR_UTILS_MEM_FAIL, "snprintf_s debugAutomicRootPath failed"); context->rootPath = strdup(debugAutomicRootPath); if (context->rootPath == NULL) { - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return APPSPAWN_SYSTEM_ERROR; } APPSPAWN_LOGI("Set automic sandbox root: %{public}s", context->rootPath); @@ -407,7 +407,7 @@ static int InstallDebugSandbox(AppSpawnMgr *content, AppSpawningCtx *property) SandboxContext *context = GetSandboxContext(); // Need free after mounting each time APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return APPSPAWN_SYSTEM_ERROR); int ret = InitDebugSandboxContext(context, sandboxCfg, property, IsNWebSpawnMode(content)); - APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(context); + APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(&context); return ret); do { @@ -420,7 +420,7 @@ static int InstallDebugSandbox(AppSpawnMgr *content, AppSpawningCtx *property) ret = MountDebugDirBySharefs(context, sandboxCfg); } while (0); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return 0; } diff --git a/modules/sandbox/sandbox_expand.c b/modules/sandbox/sandbox_expand.c index d65ced39..59817972 100644 --- a/modules/sandbox/sandbox_expand.c +++ b/modules/sandbox/sandbox_expand.c @@ -197,6 +197,7 @@ static int SetOverlayAppSandboxConfig(const SandboxContext *context, const char int ret = StringSplit(overlayInfo, "|", (void *)&overlayContext, SetOverlayAppPath); APPSPAWN_LOGV("overlayContext->mountedSrcSet: '%{public}s'", overlayContext.mountedSrcSet); free(overlayContext.mountedSrcSet); + overlayContext.mountedSrcSet = NULL; return ret; } @@ -282,7 +283,8 @@ int RegisterExpandSandboxCfgHandler(const char *name, int prio, ProcessExpandSan node->prio = prio; int ret = strcpy_s(node->name, len, name); APPSPAWN_CHECK(ret == 0, free(node); - return -1, "Failed to copy name %{public}s", name); + node = NULL; + return -1, "Failed to copy name %{public}s", name); OH_ListAddWithOrder(&g_sandboxExpandCfgList, &node->node, AppSandboxExpandAppCfgComparePrio); return 0; } diff --git a/modules/sandbox/sandbox_manager.c b/modules/sandbox/sandbox_manager.c index bda7e17a..2885711c 100644 --- a/modules/sandbox/sandbox_manager.c +++ b/modules/sandbox/sandbox_manager.c @@ -791,12 +791,12 @@ static int SpawnMountDirToShared(AppSpawnMgr *content, AppSpawningCtx *property) SandboxContext *context = GetSandboxContext(); // need free after mount APPSPAWN_CHECK_ONLY_EXPER(context != NULL, return APPSPAWN_SYSTEM_ERROR); int ret = InitSandboxContext(context, appSandbox, property, IsNWebSpawnMode(content)); // need free after mount - APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(context); + APPSPAWN_CHECK_ONLY_EXPER(ret == 0, DeleteSandboxContext(&context); return ret); ret = MountDirsToShared(content, context, appSandbox); APPSPAWN_CHECK_ONLY_LOG(ret == 0, "Failed to mount dirs to shared"); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); return ret; } diff --git a/test/mock/app_spawn_stub.h b/test/mock/app_spawn_stub.h index c9009860..4aaced71 100644 --- a/test/mock/app_spawn_stub.h +++ b/test/mock/app_spawn_stub.h @@ -61,7 +61,8 @@ int ProcessMgrRemoveApp(const AppSpawnMgr *content, const AppSpawnedProcessInfo int ProcessMgrAddApp(const AppSpawnMgr *content, const AppSpawnedProcessInfo *appInfo); void TryCreateSocket(AppSpawnReqMsgMgr *reqMgr); -int MountAllGroup(const SandboxContext *context, const cJSON *groups); +int MountAllGroup(const SandboxContext *context, const AppSpawnSandboxCfg *appSandbox, + const cJSON *groups); int MountAllHsp(const SandboxContext *context, const cJSON *hsps); void CheckAndCreateSandboxFile(const char *file); diff --git a/test/unittest/app_spawn_standard_test/app_spawn_module_interface_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_module_interface_test.cpp index 5cdf2852..640399f3 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_module_interface_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_module_interface_test.cpp @@ -327,8 +327,6 @@ HWTEST_F(AppSpawnModuleInterfaceTest, App_Spawn_ParseJsonConfig_001, TestSize.Le { int ret = 0; #ifdef APPSPAWN_SANDBOX_NEW - ret = ParseJsonConfig("etc/sandbox", RENDER_SANDBOX_FILE_NAME, TestParseAppSandboxConfig, nullptr); - EXPECT_EQ(ret, 0); ret = ParseJsonConfig("etc/sandbox", APP_SANDBOX_FILE_NAME, TestParseAppSandboxConfig, nullptr); EXPECT_EQ(ret, 0); #else diff --git a/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_mount_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_mount_test.cpp index 0d750c9e..df738bd6 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_mount_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_mount_test.cpp @@ -245,50 +245,83 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllHsp_004, TestSiz HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllGroup, TestSize.Level0) { - int ret = MountAllGroup(nullptr, nullptr); - ASSERT_EQ(ret, -1); + int ret = MountAllGroup(nullptr, nullptr, nullptr); + ASSERT_NE(ret, 0); AppSpawningCtx *spawningCtx = TestCreateAppSpawningCtx(); SandboxContext *context = TestGetSandboxContext(spawningCtx, 0); ASSERT_EQ(context != nullptr, 1); - - const char testDataGroupStr1[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":[\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\", \ - \"/data/app/el2/100/group/ce876162-fe69-45d3-aa8e-411a047af564\"], \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; + AppSpawnSandboxCfg *sandbox = CreateAppSpawnSandbox(EXT_DATA_APP_SANDBOX); + ASSERT_EQ(sandbox != nullptr, 1); + LoadAppSandboxConfig(sandbox, EXT_DATA_APP_SANDBOX); + + const char testDataGroupStr1[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + }, { + "gid":"2010001", + "dir":"/data/app/el2/100/group/49c016e6-065a-abd1-5867-b1f91114f840", + "dataGroupId":"43200", + "uuid":"49c016e6-065a-abd1-5867-b1f91114f840" + } + ])"; cJSON *config1 = cJSON_Parse(testDataGroupStr1); ASSERT_NE(config1, nullptr); - ret = MountAllGroup(context, nullptr); - ASSERT_EQ(ret, -1); - ret = MountAllGroup(nullptr, config1); - ASSERT_EQ(ret, -1); - ret = MountAllGroup(context, config1); + ret = MountAllGroup(context, sandbox, nullptr); + ASSERT_NE(ret, 0); + ret = MountAllGroup(context, nullptr, config1); + ASSERT_NE(ret, 0); + ret = MountAllGroup(nullptr, sandbox, config1); + ASSERT_NE(ret, 0); + context->rootPath = strdup("/mnt/sandbox/100/app-root"); + ASSERT_EQ(context->rootPath != nullptr, 1); + ret = MountAllGroup(context, sandbox, config1); ASSERT_EQ(ret, 0); cJSON_Delete(config1); - - const char testDataGroupStr2[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":[\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\"], \ - \"gid\":[\"20100001\"] \ - }"; + free(context->rootPath); + context->rootPath = NULL; + + const char testDataGroupStr2[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + }, { + "gid":"2010001", + "dir":"/data/app/el2/100/group/49c016e6-065a-abd1-5867-b1f91114f840", + "uuid":"49c016e6-065a-abd1-5867-b1f91114f840" + } + ])"; cJSON *config2 = cJSON_Parse(testDataGroupStr2); ASSERT_NE(config2, nullptr); - ret = MountAllGroup(context, config2); // gid count != dataGroupId - ASSERT_EQ(ret, -1); + ret = MountAllGroup(context, sandbox, config2); // gid count != dataGroupId + ASSERT_NE(ret, 0); cJSON_Delete(config2); - const char testDataGroupStr3[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":[\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\"], \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; + const char testDataGroupStr3[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + }, { + "gid":"2010001", + "dataGroupId":"43200", + "uuid":"49c016e6-065a-abd1-5867-b1f91114f840" + } + ])"; cJSON *config3 = cJSON_Parse(testDataGroupStr3); ASSERT_NE(config3, nullptr); - ret = MountAllGroup(context, config3); // dir count != dataGroupId - ASSERT_EQ(ret, -1); + ret = MountAllGroup(context, sandbox, config3); // dir count != dataGroupId + ASSERT_NE(ret, -1); cJSON_Delete(config3); + if (sandbox != nullptr) { + sandbox->extData.freeNode(&sandbox->extData); + } } HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllGroup_001, TestSize.Level0) @@ -296,24 +329,25 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllGroup_001, TestS AppSpawningCtx *spawningCtx = TestCreateAppSpawningCtx(); SandboxContext *context = TestGetSandboxContext(spawningCtx, 0); ASSERT_EQ(context != nullptr, 1); - - const char testDataGroupStr1[] = "{ \ - \"test\":[\"1234abcd5678efgh\", \"abcduiop1234\"] \ - }"; + AppSpawnSandboxCfg *sandbox = CreateAppSpawnSandbox(EXT_DATA_APP_SANDBOX); + ASSERT_EQ(sandbox != nullptr, 1); + LoadAppSandboxConfig(sandbox, EXT_DATA_APP_SANDBOX); + + const char testDataGroupStr1[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + } + ])"; cJSON *config1 = cJSON_Parse(testDataGroupStr1); ASSERT_NE(config1, nullptr); - int ret = MountAllGroup(context, config1); // dataGroupIds is null - ASSERT_EQ(ret, -1); + int ret = MountAllGroup(context, sandbox, config1); // dataGroupIds is null + ASSERT_NE(ret, 0); cJSON_Delete(config1); - - const char testDataGroupStr2[] = "{ \ - \"dataGroupId\":\"1234abcd5678efgh\" \ - }"; - cJSON *config2 = cJSON_Parse(testDataGroupStr2); - ASSERT_NE(config2, nullptr); - ret = MountAllGroup(context, config2); // dataGroupIds is not Array - ASSERT_EQ(ret, -1); - cJSON_Delete(config2); + if (sandbox != nullptr) { + sandbox->extData.freeNode(&sandbox->extData); + } } HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllGroup_002, TestSize.Level0) @@ -321,48 +355,36 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_MountAllGroup_002, TestS AppSpawningCtx *spawningCtx = TestCreateAppSpawningCtx(); SandboxContext *context = TestGetSandboxContext(spawningCtx, 0); ASSERT_EQ(context != nullptr, 1); - - const char testDataGroupStr1[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"test\":[\"20100001\", \"20100002\"] \ - }"; + AppSpawnSandboxCfg *sandbox = CreateAppSpawnSandbox(EXT_DATA_APP_SANDBOX); + ASSERT_EQ(sandbox != nullptr, 1); + LoadAppSandboxConfig(sandbox, EXT_DATA_APP_SANDBOX); + + const char testDataGroupStr1[] = R"([ + { + "test":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + } + ])"; cJSON *config1 = cJSON_Parse(testDataGroupStr1); ASSERT_NE(config1, nullptr); - int ret = MountAllGroup(context, config1); // gid is null - ASSERT_EQ(ret, -1); + int ret = MountAllGroup(context, sandbox, config1); // gid is null + ASSERT_NE(ret, 0); cJSON_Delete(config1); - const char testDataGroupStr2[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"gid\":\"20100001\" \ - }"; + const char testDataGroupStr2[] = R"([ + { + "gid":"2010001", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + } + ])"; cJSON *config2 = cJSON_Parse(testDataGroupStr2); ASSERT_NE(config2, nullptr); - ret = MountAllGroup(context, config2); // gid is not Array - ASSERT_EQ(ret, -1); + ret = MountAllGroup(context, sandbox, config2); // dir + ASSERT_NE(ret, 0); cJSON_Delete(config2); - - const char testDataGroupStr3[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"test\":[\"/data/app/el2/100/group/ce876162-fe69-45d3-aa8e-411a047af564\"], \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; - cJSON *config3 = cJSON_Parse(testDataGroupStr3); - ASSERT_NE(config3, nullptr); - ret = MountAllGroup(context, config3); // dir is null - ASSERT_EQ(ret, -1); - cJSON_Delete(config3); - - const char testDataGroupStr4[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\", \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; - cJSON *config4 = cJSON_Parse(testDataGroupStr4); - ASSERT_NE(config4, nullptr); - ret = MountAllGroup(context, config4); // dir is not Array - ASSERT_EQ(ret, -1); - cJSON_Delete(config4); } HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_cfgvar, TestSize.Level0) @@ -486,6 +508,7 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_manager, TestSize.Level0 EXPECT_EQ(ret, -1); AppSpawningCtx property = {}; property.message = (AppSpawnMsgNode *)malloc(sizeof(AppSpawnMsgNode)); + memset_s(property.message, sizeof(AppSpawnMsgNode), 0, sizeof(AppSpawnMsgNode)); ASSERT_EQ(property.message != nullptr, 1); ret = strcpy_s(property.message->msgHeader.processName, APP_LEN_PROC_NAME, "com.xxx.xxx.xxx"); EXPECT_EQ(ret, 0); @@ -675,7 +698,8 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_load_006, TestSize.Level }"; cJSON *config1 = cJSON_Parse(testStr1); ASSERT_NE(config1, nullptr); - int ret = ParseGidTableConfig(nullptr, config1, nullptr); + SandboxSection section = {}; + int ret = ParseGidTableConfig(nullptr, config1, §ion); EXPECT_EQ(ret, 0); cJSON_Delete(config1); @@ -685,11 +709,10 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_load_006, TestSize.Level cJSON *config2 = cJSON_Parse(testStr2); ASSERT_NE(config2, nullptr); cJSON *testCfg = cJSON_GetObjectItemCaseSensitive(config2, "test"); - ret = ParseGidTableConfig(nullptr, testCfg, nullptr); + ret = ParseGidTableConfig(nullptr, testCfg, §ion); EXPECT_EQ(ret, 0); cJSON_Delete(config2); - SandboxSection section = {}; const char testStr3[] = "{ \ \"gids\":[\"202400\", \"202500\", \"202600\"] \ }"; @@ -700,10 +723,6 @@ HWTEST_F(AppSpawnSandboxCoverageTest, App_Spawn_Sandbox_load_006, TestSize.Level EXPECT_EQ(ret, 0); cJSON_Delete(config3); - section.gidTable = (gid_t *)malloc(sizeof(gid_t) * 10); - ASSERT_EQ(section.gidTable != nullptr, 1); - ret = ParseGidTableConfig(nullptr, testCfg, §ion); - EXPECT_EQ(ret, 0); if (section.gidTable != nullptr) { free(section.gidTable); } diff --git a/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_test.cpp index 75fc2b2f..92bc3010 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_sandbox_new_test.cpp @@ -458,14 +458,14 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_001, TestSize.Level0) SandboxContext *context = TestGetSandboxContext(spawningCtx, 0); ASSERT_EQ(context != nullptr, 1); - const char *real = "/data/app/el2/100/log/com.example.myapplication_100"; + const char *real = "/data/app/el2/100/log/100_com.example.myapplication"; const char *value = GetSandboxRealVar(context, 0, "/data/app/el2//log/", nullptr, nullptr); APPSPAWN_LOGV("value %{public}s", value); APPSPAWN_LOGV("real %{public}s", real); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -487,7 +487,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_002, TestSize.Level0) #else ASSERT_EQ(strcmp(value, "/system/lib/module") == 0, 1); #endif - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -506,7 +506,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_003, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -537,7 +537,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_004, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -579,7 +579,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_005, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -603,7 +603,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_006, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -627,7 +627,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_007, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -651,7 +651,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_008, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -670,7 +670,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Variable_009, TestSize.Level0) APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, real) == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -779,12 +779,19 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_ExpandCfg_02, TestSize.Level0) reqHandle = g_testHelper.CreateMsg(clientHandle, MSG_SPAWN_NATIVE_PROCESS, 0); APPSPAWN_CHECK(reqHandle != INVALID_REQ_HANDLE, break, "Failed to create req %{public}s", APPSPAWN_SERVER_NAME); // add expand info to msg - const char dataGroupInfoListStr[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":[\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\", \ - \"/data/app/el2/100/group/ce876162-fe69-45d3-aa8e-411a047af564\"], \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; + const char dataGroupInfoListStr[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + }, { + "gid":"2010001", + "dir":"/data/app/el2/100/group/49c016e6-065a-abd1-5867-b1f91114f840", + "dataGroupId":"43200", + "uuid":"49c016e6-065a-abd1-5867-b1f91114f840" + } + ])"; ret = AppSpawnReqMsgAddExtInfo(reqHandle, "DataGroup", reinterpret_cast(const_cast(dataGroupInfoListStr)), strlen(dataGroupInfoListStr) + 1); APPSPAWN_CHECK(ret == 0, break, "Failed to ext tlv %{public}s", dataGroupInfoListStr); @@ -1461,8 +1468,8 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_mount_006, TestSize.Level0) stub->arg = reinterpret_cast(&args); stub->result = 0; ret = MountSandboxConfigs(sandbox, property, 0); - ASSERT_EQ(ret, 0); // do not check result - ASSERT_EQ(stub->result, 0); + ASSERT_NE(ret, 0); // do not check result + ASSERT_NE(stub->result, 0); ret = 0; } while (0); if (sandbox) { @@ -2095,12 +2102,19 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_003, TestSize.Level ret = AppSpawnReqMsgSetAppFlag(reqHandle, APP_FLAGS_ISOLATED_SANDBOX); APPSPAWN_CHECK_ONLY_EXPER(ret == 0, break); // add expand info to msg - const char dataGroupInfoListStr[] = "{ \ - \"dataGroupId\":[\"1234abcd5678efgh\", \"abcduiop1234\"], \ - \"dir\":[\"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975\", \ - \"/data/app/el2/100/group/ce876162-fe69-45d3-aa8e-411a047af564\"], \ - \"gid\":[\"20100001\", \"20100002\"] \ - }"; + const char dataGroupInfoListStr[] = R"([ + { + "gid":"2010001", + "dir":"/data/app/el2/100/group/091a68a9-2cc9-4279-8849-28631b598975", + "dataGroupId":"43200", + "uuid":"091a68a9-2cc9-4279-8849-28631b598975" + }, { + "gid":"2010001", + "dir":"/data/app/el2/100/group/49c016e6-065a-abd1-5867-b1f91114f840", + "dataGroupId":"43200", + "uuid":"49c016e6-065a-abd1-5867-b1f91114f840" + } + ])"; ret = AppSpawnReqMsgAddStringInfo(reqHandle, "DataGroup", dataGroupInfoListStr); APPSPAWN_CHECK(ret == 0, break, "Failed to ext tlv %{public}s", dataGroupInfoListStr); @@ -2132,7 +2146,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_004, TestSize.Level APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); ASSERT_EQ(strcmp(value, "/system/com.example.myapplication/module") == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -2149,7 +2163,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_005, TestSize.Level APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); // +clone-bundleIndex+packageName ASSERT_EQ(strcmp(value, "/system/+clone-100+com.example.myapplication/module") == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); } @@ -2174,7 +2188,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_006, TestSize.Level APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); // +extension-+packageName ASSERT_EQ(strcmp(value, "/system/+extension-test001+com.example.myapplication/module") == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); AppSpawnClientDestroy(clientHandle); } @@ -2202,7 +2216,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_007, TestSize.Level APPSPAWN_LOGV("value %{public}s", value); ASSERT_EQ(value != nullptr, 1); // +clone-bundleIndex+extension-+packageName ASSERT_EQ(strcmp(value, "/system/+clone-100+extension-test001+com.example.myapplication/module") == 0, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); AppSpawnClientDestroy(clientHandle); } @@ -2227,7 +2241,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_008, TestSize.Level const char *value = GetSandboxRealVar(context, 0, "/system//module", nullptr, nullptr); ASSERT_EQ(value == nullptr, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); AppSpawnClientDestroy(clientHandle); } @@ -2250,7 +2264,7 @@ HWTEST_F(AppSpawnSandboxTest, App_Spawn_Sandbox_AppExtension_009, TestSize.Level const char *value = GetSandboxRealVar(context, 0, "/system//module", nullptr, nullptr); ASSERT_EQ(value == nullptr, 1); - DeleteSandboxContext(context); + DeleteSandboxContext(&context); DeleteAppSpawningCtx(spawningCtx); AppSpawnClientDestroy(clientHandle); } diff --git a/test/unittest/app_spawn_standard_test/app_spawn_sandboxmgr_test.cpp b/test/unittest/app_spawn_standard_test/app_spawn_sandboxmgr_test.cpp index 3a63ac1c..1f736325 100644 --- a/test/unittest/app_spawn_standard_test/app_spawn_sandboxmgr_test.cpp +++ b/test/unittest/app_spawn_standard_test/app_spawn_sandboxmgr_test.cpp @@ -102,7 +102,7 @@ HWTEST_F(AppSpawnSandboxMgrTest, App_Spawn_AppSpawnSandboxCfg_002, TestSize.Leve HWTEST_F(AppSpawnSandboxMgrTest, App_Spawn_AppSpawnSandboxCfg_003, TestSize.Level0) { - AppSpawnMgr *mgr = CreateAppSpawnMgr(MODE_FOR_NWEB_SPAWN); + AppSpawnMgr *mgr = CreateAppSpawnMgr(MODE_FOR_APP_SPAWN); EXPECT_EQ(mgr != nullptr, 1); AppSpawnSandboxCfg *sandbox = CreateAppSpawnSandbox(EXT_DATA_APP_SANDBOX); @@ -133,7 +133,7 @@ HWTEST_F(AppSpawnSandboxMgrTest, App_Spawn_AppSpawnSandboxCfg_003, TestSize.Leve HWTEST_F(AppSpawnSandboxMgrTest, App_Spawn_SandboxSection_001, TestSize.Level0) { - AppSpawnMgr *mgr = CreateAppSpawnMgr(MODE_FOR_NWEB_SPAWN); + AppSpawnMgr *mgr = CreateAppSpawnMgr(MODE_FOR_APP_SPAWN); EXPECT_EQ(mgr != nullptr, 1); AppSpawnSandboxCfg *sandbox = CreateAppSpawnSandbox(EXT_DATA_APP_SANDBOX); diff --git a/test/unittest/app_spawn_test_helper.cpp b/test/unittest/app_spawn_test_helper.cpp index 49802175..7d4d8228 100644 --- a/test/unittest/app_spawn_test_helper.cpp +++ b/test/unittest/app_spawn_test_helper.cpp @@ -470,7 +470,7 @@ int AppSpawnTestHelper::AddFdInfo(AppSpawnReqMsgHandle &reqHandle) if (fdArg < 0) { fdArg = open("/dev/random", O_RDONLY); } - APPSPAWN_LOGE("Add fd info %d", fdArg); + APPSPAWN_LOGE("Add fd info %{public}d", fdArg); APPSPAWN_CHECK(fdArg >= 0, return -1, "open fd failed "); return AppSpawnReqMsgAddFd(reqHandle, "fdname", fdArg); } diff --git a/test/unittest/app_spawn_test_helper.h b/test/unittest/app_spawn_test_helper.h index 7d364871..c161d3e8 100644 --- a/test/unittest/app_spawn_test_helper.h +++ b/test/unittest/app_spawn_test_helper.h @@ -152,8 +152,6 @@ private: const_cast("ohos.permission.FILE_CROSS_APP"), const_cast("ohos.permission.ACTIVATE_THEME_PACKAGE"), const_cast("ohos.permission.GET_WALLPAPER"), - const_cast("ohos.permission.ACCESS_DATA"), - const_cast("ohos.permission.ACCESS_DEV_FUSE"), const_cast("ohos.permission.FILE_ACCESS_MANAGER") }; }; -- Gitee