From ead2c2c0aee3ee30f6d4dcf3908617b233eff76b Mon Sep 17 00:00:00 2001 From: wangpggg Date: Thu, 14 Sep 2023 10:22:22 +0800 Subject: [PATCH] Optimize judgment conditions Signed-off-by: wangpggg --- .../innerkits/native/file_share/src/file_share.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/interfaces/innerkits/native/file_share/src/file_share.cpp b/interfaces/innerkits/native/file_share/src/file_share.cpp index 5dd2008f3..f761d2031 100644 --- a/interfaces/innerkits/native/file_share/src/file_share.cpp +++ b/interfaces/innerkits/native/file_share/src/file_share.cpp @@ -48,6 +48,7 @@ const string DATA_APP_EL2_PATH = "/data/service/el2/"; const string SHARE_R_PATH = "/r/"; const string SHARE_RW_PATH = "/rw/"; const string SHARE_PATH = "/share/"; +const string EXTERNAL_PATH = "/mnt/data/external"; } struct FileShareInfo { @@ -286,6 +287,12 @@ static int32_t CheckValidLowerPath(const string &path) return -EINVAL; } +static bool NotRequiredBindMount(const FileShareInfo& info, uint32_t flag) +{ + return (info.currentUid_ == "0" || + ((flag & PERSISTABLE_URI_PERMISSION) != 0 && info.providerLowerPath_.find(EXTERNAL_PATH) != 0)); +} + int32_t CreateShareFile(const string &uri, uint32_t tokenId, uint32_t flag) { FileShareInfo info; @@ -293,7 +300,7 @@ int32_t CreateShareFile(const string &uri, uint32_t tokenId, uint32_t flag) LOGD("CreateShareFile begin with uri %{private}s decodeUri %{private}s", uri.c_str(), decodeUri.c_str()); int32_t ret = GetFileShareInfo(decodeUri, tokenId, flag, info); - if (ret != 0 || info.currentUid_ == "0" || (flag & PERSISTABLE_URI_PERMISSION) != 0) { + if (ret != 0 || NotRequiredBindMount(info, flag)) { LOGE("Failed to get FileShareInfo with %{public}d", ret); return ret; } -- Gitee