Fix misuse of dynamic_cast 11/168211/2
authorsangwan.kwon <sangwan.kwon@samsung.com>
Thu, 25 Jan 2018 04:36:02 +0000 (13:36 +0900)
committersangwan.kwon <sangwan.kwon@samsung.com>
Thu, 25 Jan 2018 06:24:00 +0000 (15:24 +0900)
- The objective type is obvious. (SocketManager*, Policy*)
- dynamic_cast is expensive. (run-time)
- Exact output varies by system.

Change-Id: Iac746b537ce3e356a98a14ca603eb089b9554af3
Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
CMakeLists.txt
src/server/main/socket-manager.cpp
src/server/service/policy-file.cpp

index e3afdcc5d32276609d644db14ed9411d3703e4d6..3545204e186e24371fff8f7fd3d425b1401a20f1 100644 (file)
@@ -28,13 +28,13 @@ INCLUDE(FindPkgConfig)
 ############################# compiler flags ##################################
 
 SET(CMAKE_C_FLAGS_PROFILING    "-g -O0 -pg -Wp,-U_FORTIFY_SOURCE")
-SET(CMAKE_CXX_FLAGS_PROFILING  "-g -std=c++0x -O0 -pg -Wp,-U_FORTIFY_SOURCE")
+SET(CMAKE_CXX_FLAGS_PROFILING  "-g -std=c++0x -O0 -pg -Wp,-U_FORTIFY_SOURCE -fno-rtti")
 SET(CMAKE_C_FLAGS_DEBUG        "-g -O0 -ggdb -Wp,-U_FORTIFY_SOURCE")
-SET(CMAKE_CXX_FLAGS_DEBUG      "-g -std=c++0x -O0 -ggdb -Wp,-U_FORTIFY_SOURCE")
+SET(CMAKE_CXX_FLAGS_DEBUG      "-g -std=c++0x -O0 -ggdb -Wp,-U_FORTIFY_SOURCE -fno-rtti")
 SET(CMAKE_C_FLAGS_RELEASE      "-g -O2")
-SET(CMAKE_CXX_FLAGS_RELEASE    "-g -std=c++0x -O2")
+SET(CMAKE_CXX_FLAGS_RELEASE    "-g -std=c++0x -O2 -fno-rtti")
 SET(CMAKE_C_FLAGS_CCOV         "-g -O2 --coverage")
-SET(CMAKE_CXX_FLAGS_CCOV       "-g -std=c++0x -O2 --coverage")
+SET(CMAKE_CXX_FLAGS_CCOV       "-g -std=c++0x -O2 --coverage -fno-rtti")
 
 # If supported for the target machine, emit position-independent code,suitable
 # for dynamic linking and avoiding any limit on the size of the global offset
index 958eca14274ed1baedeefe7b8f16bd3eee9d230d..74f2f164d51afd61650171797288d6e5bf7d422c 100644 (file)
@@ -109,7 +109,7 @@ struct SignalService : public GenericSocketService {
 
                if (siginfo->ssi_signo == SIGTERM) {
                        LogInfo("Got signal: SIGTERM");
-                       auto socketManager = dynamic_cast<SocketManager *>(m_serviceManager);
+                       auto socketManager = static_cast<SocketManager *>(m_serviceManager);
                        if (socketManager != nullptr)
                                socketManager->MainLoopStop();
                        return;
index 2394657dc0fa6c7fa2703264db087cfd634eb131..f99b882e66e4bd7d60cac52df8c988887191882a 100644 (file)
@@ -162,7 +162,7 @@ void PolicyFile::loadMemoryFromFile()
 
        Deserialization::Deserialize(policyBuffer, m_enable);
        PolicySerializable policys(policyBuffer);
-       m_policy = *(dynamic_cast<Policy *>(&policys));
+       m_policy = *(static_cast<Policy *>(&policys));
        LogSecureDebug("User: " << m_user << "Policy: " << m_policy.info());
 }
 
@@ -282,9 +282,9 @@ bool PolicyFile::checkMaxNumSeqLength(const std::string &password) const
                        num_cnt++;
 
                        if (order == -2) { // not set, fist or second char of a sequence
-                               if (prev_num == 0)   // fist second char
+                               if (prev_num == 0) { // fist second char
                                        curr_num_seq_len = 1;
-                               else if (curr_ch == prev_num - 1) { // decreasing order
+                               else if (curr_ch == prev_num - 1) { // decreasing order
                                        order = -1;
                                        curr_num_seq_len = 2;
                                } else if (curr_ch == prev_num + 0) { // same order
@@ -300,9 +300,9 @@ bool PolicyFile::checkMaxNumSeqLength(const std::string &password) const
                                        order = -2;
                                        curr_num_seq_len = 1;
                                }
-                       } else if (curr_ch == prev_num + order)   // order is still working
+                       } else if (curr_ch == prev_num + order) { // order is still working
                                curr_num_seq_len++;
-                       else { // order changed
+                       else { // order changed
                                if (max_num_seq_len < curr_num_seq_len)
                                        max_num_seq_len = curr_num_seq_len;
 
@@ -382,7 +382,7 @@ bool PolicyFile::checkQualityType(const std::string &password) const
                return false;
        } catch (...) {
                LogError("Fail to check quality with unknown reason : QualityType="
-                       << m_policy.qualityType << ", Pattern=" << pattern );
+                       << m_policy.qualityType << ", Pattern=" << pattern);
                return false;
        }
 }