diff options
author | Konrad Lipinski <k.lipinski2@partner.samsung.com> | 2018-11-26 14:43:37 +0100 |
---|---|---|
committer | Konrad Lipinski <k.lipinski2@partner.samsung.com> | 2018-11-26 14:43:37 +0100 |
commit | 6898da86e8fc4c6c1c1244a01513a2b3a57e474a (patch) | |
tree | b046a954c9d0c47e0ee80e605ffba7d28e69850c | |
parent | 7983df08f91f28b184a199efca3e66a6f05b3a95 (diff) | |
download | security-manager-6898da86e8fc4c6c1c1244a01513a2b3a57e474a.tar.gz security-manager-6898da86e8fc4c6c1c1244a01513a2b3a57e474a.tar.bz2 security-manager-6898da86e8fc4c6c1c1244a01513a2b3a57e474a.zip |
Fix issues raised by static analysis
Change-Id: I8d8877f933335bf03511264576e15e75896e7411
-rw-r--r-- | src/client/client-security-manager.cpp | 18 | ||||
-rw-r--r-- | src/license-manager/agent/main.cpp | 13 | ||||
-rw-r--r-- | src/server/main/socket-manager.cpp | 4 | ||||
-rw-r--r-- | test/test_privilege_db_migration.cpp | 2 |
4 files changed, 27 insertions, 10 deletions
diff --git a/src/client/client-security-manager.cpp b/src/client/client-security-manager.cpp index 95c41dcc..cef785c1 100644 --- a/src/client/client-security-manager.cpp +++ b/src/client/client-security-manager.cpp @@ -1427,15 +1427,25 @@ static lib_retcode get_app_and_pkg_id_from_smack_label( return SECURITY_MANAGER_ERROR_NO_SUCH_OBJECT; } - if (app_name && !appNameString.empty() && !(*app_name = strdup(appNameString.c_str()))) { + char *appName = nullptr; + if (app_name && !appNameString.empty() && !(appName = strdup(appNameString.c_str()))) { LogError("Memory allocation in strdup failed."); return SECURITY_MANAGER_ERROR_MEMORY; } - if (pkg_name && !(*pkg_name = strdup(pkgNameString.c_str()))) { - LogError("Memory allocation in strdup failed."); - return SECURITY_MANAGER_ERROR_MEMORY; + char *pkgName = nullptr; + if (pkg_name) { + if (!(pkgName = strdup(pkgNameString.c_str()))) { + free(appName); + LogError("Memory allocation in strdup failed."); + return SECURITY_MANAGER_ERROR_MEMORY; + } + *pkg_name = pkgName; } + + if (app_name) + *app_name = appName; + return SECURITY_MANAGER_SUCCESS; } diff --git a/src/license-manager/agent/main.cpp b/src/license-manager/agent/main.cpp index 1b60dd77..e5035d95 100644 --- a/src/license-manager/agent/main.cpp +++ b/src/license-manager/agent/main.cpp @@ -35,6 +35,15 @@ #include <agent.h> static LicenseManager::Agent *s_agentPtr = nullptr; +class SigAgentPtrSetter { +public: + explicit SigAgentPtrSetter(LicenseManager::Agent *p) { + s_agentPtr = p; + } + ~SigAgentPtrSetter() { + s_agentPtr = nullptr; + } +}; void kill_handler(int sig UNUSED) { ALOGD("License manager service is going down now"); @@ -68,7 +77,7 @@ int main(int, char **) { ALOGE("cynara initialization failed"); return -1; } - s_agentPtr = &agent; + SigAgentPtrSetter sigAgentPtrSetter{&agent}; ret = sd_notify(0, "READY=1"); if (ret == 0) { ALOGW("Agent was not configured to notify its status"); @@ -76,9 +85,7 @@ int main(int, char **) { ALOGE("sd_notify failed: [" << ret << "]"); } agent.mainLoop(); - s_agentPtr = nullptr; } catch (const std::exception &e) { - s_agentPtr = nullptr; std::string error = e.what(); ALOGE("Exception: %s", error.c_str()); } diff --git a/src/server/main/socket-manager.cpp b/src/server/main/socket-manager.cpp index 885b7e3c..ec0d6f70 100644 --- a/src/server/main/socket-manager.cpp +++ b/src/server/main/socket-manager.cpp @@ -497,8 +497,8 @@ int SocketManager::CreateDomainSocketHelp( { int sockfd; - if (desc.serviceHandlerPath.size() >= sizeof(static_cast<sockaddr_un*>(0)->sun_path) / - sizeof(decltype(desc.serviceHandlerPath)::value_type)) { + static_assert(1 == sizeof(*desc.serviceHandlerPath.c_str())); + if (desc.serviceHandlerPath.size() >= sizeof(static_cast<sockaddr_un*>(0)->sun_path)) { LogError("Service handler path too long: " << desc.serviceHandlerPath.size()); ThrowMsg(Exception::InitFailed, "Service handler path too long: " << desc.serviceHandlerPath.size()); diff --git a/test/test_privilege_db_migration.cpp b/test/test_privilege_db_migration.cpp index ba450ac6..b06b0fd8 100644 --- a/test/test_privilege_db_migration.cpp +++ b/test/test_privilege_db_migration.cpp @@ -90,7 +90,7 @@ BOOST_AUTO_TEST_CASE(T1510_loader_output) { BOOST_REQUIRE(SECURITY_MANAGER_SUCCESS == FS::overwriteFile(PRIVILEGE_DB_EXAMPLE_RULES, TEST_DB_PATH)); BOOST_REQUIRE(!system(TEST_RULES_LOADER_CMD " | LC_ALL=C sort > /tmp/out")); BOOST_REQUIRE(fileContentsSame("/tmp/out", PRIVILEGE_DB_EXAMPLE_RULES_OUTPUT)); - remove("/tmp/out"); + BOOST_REQUIRE(!remove("/tmp/out")); } BOOST_AUTO_TEST_CASE(T1570_fallback_canonicity) { |