From 6758af0c0da8d44e844b2e485d716a9cc07010d4 Mon Sep 17 00:00:00 2001 From: LongPing WEI Date: Mon, 11 Apr 2022 20:00:11 +0800 Subject: [PATCH 1/4] Fix the crash problem caused by overflow in GetDacConfig. Signed-off-by: LongPing WEI --- contrib/android/dac_config.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/contrib/android/dac_config.cpp b/contrib/android/dac_config.cpp index 422e0d52..0795de40 100644 --- a/contrib/android/dac_config.cpp +++ b/contrib/android/dac_config.cpp @@ -198,7 +198,7 @@ extern "C" { return 0; } - void GetDacConfig(const char* path, int dir, char* targetOutPath, + void GetDacConfig(const char* path, int dir, char*, unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { @@ -206,25 +206,24 @@ extern "C" { path++; } - (void)targetOutPath; string str = path; - string str2; DacConfig dacConfig(00755, 0, 0, 0, ""); if (dir == 0) { dacConfig.SetDefault(00644, 0, 0, 0, ""); } - if (g_configMap.count(str)) { - dacConfig = g_configMap[str]; + auto it = g_configMap.find(str); + if (it != g_configMap.end()) { + dacConfig = it->second; } else if (dir == 0 && !str.empty()) { - for (auto i = str.size() - 1; i >= 0; i--) { + for (int i = str.size() - 1; i >= 0; i--) { if (str[i] == '/') { break; } else { - str2 = str.substr(0, i) + "*"; - if (g_configMap.count(str2)) { - dacConfig = g_configMap[str2]; + it = g_configMap.find(str.substr(0, i) + "*"); + if (it != g_configMap.end()) { + dacConfig = it->second; break; } } -- Gitee From 97aa5de11e0deb0aca1ffec68952d96d4961ca25 Mon Sep 17 00:00:00 2001 From: LongPing WEI Date: Mon, 11 Apr 2022 20:40:33 +0800 Subject: [PATCH 2/4] Pass parameter p by reference. Signed-off-by: LongPing WEI --- contrib/android/dac_config.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/contrib/android/dac_config.cpp b/contrib/android/dac_config.cpp index 0795de40..915abde4 100644 --- a/contrib/android/dac_config.cpp +++ b/contrib/android/dac_config.cpp @@ -35,14 +35,14 @@ struct DacConfig { string path; DacConfig() : uid(0), gid(0), mode(0), capabilities(0), path("") {} - DacConfig(unsigned int m, unsigned int u, unsigned int g, uint64_t c, string p) : + DacConfig(unsigned int m, unsigned int u, unsigned int g, uint64_t c, const string &p) : uid(u), gid(g), mode(m), capabilities(c), path(p) {} - void SetDefault(unsigned int m, unsigned int u, unsigned int g, uint64_t c, string p) + void SetDefault(unsigned int m, unsigned int u, unsigned int g, uint64_t c, const string &p) { this->uid = u; this->gid = g; -- Gitee From 00663d8aab613da69b366b75b541bd53f72a4fe3 Mon Sep 17 00:00:00 2001 From: LongPing WEI Date: Mon, 11 Apr 2022 20:48:17 +0800 Subject: [PATCH 3/4] static_cast size_t to int Signed-off-by: LongPing WEI --- contrib/android/dac_config.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/contrib/android/dac_config.cpp b/contrib/android/dac_config.cpp index 915abde4..e080c56a 100644 --- a/contrib/android/dac_config.cpp +++ b/contrib/android/dac_config.cpp @@ -217,7 +217,7 @@ extern "C" { if (it != g_configMap.end()) { dacConfig = it->second; } else if (dir == 0 && !str.empty()) { - for (int i = str.size() - 1; i >= 0; i--) { + for (int i = static_cast(str.size()) - 1; i >= 0; i--) { if (str[i] == '/') { break; } else { -- Gitee From f1f1a3471fdfa4e39e6976ff02cc6109bf190b90 Mon Sep 17 00:00:00 2001 From: LongPing WEI Date: Mon, 11 Apr 2022 20:54:56 +0800 Subject: [PATCH 4/4] Fix CodeCheck warning. Signed-off-by: LongPing WEI --- contrib/android/dac_config.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/contrib/android/dac_config.cpp b/contrib/android/dac_config.cpp index e080c56a..1c76dfd7 100644 --- a/contrib/android/dac_config.cpp +++ b/contrib/android/dac_config.cpp @@ -202,11 +202,7 @@ extern "C" { unsigned* uid, unsigned* gid, unsigned* mode, uint64_t* capabilities) { - if (path && path[0] == '/') { - path++; - } - - string str = path; + string str = (path != nullptr && *path == '/') ? path + 1 : path; DacConfig dacConfig(00755, 0, 0, 0, ""); if (dir == 0) { -- Gitee