From 760202c780fcdb59a5c60f6abc79b73a3ca5a005 Mon Sep 17 00:00:00 2001 From: chennuo Date: Wed, 6 Aug 2025 22:52:14 +0800 Subject: [PATCH] add permissionUserId Signed-off-by: chennuo --- appdata-sandbox.json | 2 +- modules/sandbox/normal/sandbox_common.cpp | 7 ++++++- modules/sandbox/normal/sandbox_def.h | 1 + 3 files changed, 8 insertions(+), 2 deletions(-) diff --git a/appdata-sandbox.json b/appdata-sandbox.json index 04203650..c25d3289 100755 --- a/appdata-sandbox.json +++ b/appdata-sandbox.json @@ -920,7 +920,7 @@ "src-path" : "", "sandbox-path" : "", "sandbox-flags" : [], - "dec-paths": [ "/mnt/data/fuse", "/mnt/sandbox/*//storage/Users/currentUser" ] + "dec-paths": [ "/mnt/data/fuse", "/mnt/sandbox///storage/Users/currentUser" ] } ] }], diff --git a/modules/sandbox/normal/sandbox_common.cpp b/modules/sandbox/normal/sandbox_common.cpp index 5552befe..614e71df 100644 --- a/modules/sandbox/normal/sandbox_common.cpp +++ b/modules/sandbox/normal/sandbox_common.cpp @@ -897,7 +897,8 @@ std::string SandboxCommon::ConvertToRealPathWithPermission(const AppSpawningCtx { AppSpawnMsgBundleInfo *info = reinterpret_cast(GetAppProperty(appProperty, TLV_BUNDLE_INFO)); - if (info == nullptr) { + AppSpawnMsgDacInfo *dacInfo = reinterpret_cast(GetAppProperty(appProperty, TLV_DAC_INFO)); + if (info == nullptr || dacInfo == nullptr) { return ""; } if (path.find(SandboxCommonDef::g_packageNameIndex) != std::string::npos) { @@ -915,6 +916,10 @@ std::string SandboxCommon::ConvertToRealPathWithPermission(const AppSpawningCtx if (path.find(SandboxCommonDef::g_userId) != std::string::npos) { path = ReplaceAllVariables(path, SandboxCommonDef::g_userId, "currentUser"); } + + if (path.find(SandboxCommonDef::g_permissionUserId) != std::string::npos) { + path = ReplaceAllVariables(path, SandboxCommonDef::g_permissionUserId, std::to_string(dacInfo->uid / UID_BASE)); + } return path; } diff --git a/modules/sandbox/normal/sandbox_def.h b/modules/sandbox/normal/sandbox_def.h index 06c81e7b..e0dcfdc8 100644 --- a/modules/sandbox/normal/sandbox_def.h +++ b/modules/sandbox/normal/sandbox_def.h @@ -86,6 +86,7 @@ constexpr const char *g_gidPrefix = "gids"; // 可变参数 const std::string g_userId = ""; +const std::string g_permissionUserId = ""; const std::string g_permissionUser = ""; const std::string g_packageName = ""; const std::string g_packageNameIndex = ""; -- Gitee