fixed svace defects 92/75492/2 accepted/tizen/common/20160620.163751 submit/tizen/20160620.065057
authorKyoungyong Lee <bluevox@naver.com>
Mon, 20 Jun 2016 06:30:39 +0000 (15:30 +0900)
committerKyoungyong Lee <bluevox@naver.com>
Mon, 20 Jun 2016 06:35:49 +0000 (15:35 +0900)
Change-Id: Icdd719e4559470e0ecda5d0f5481244e1d97d624

pkgmgr_plugin/privileges.cpp
server/src/CynaraService.cpp
server/src/PrivacyGuardDb.cpp

index d9ee58e..b00f9a7 100755 (executable)
@@ -36,10 +36,13 @@ void destroy_char_list(char** ppList, int size)
 
        if (ppList) {
                for (i = 0; i < size; ++i) {
-                       if (ppList[i])
+                       if (ppList[i]) {
                                free(ppList[i]);
+                       }
+               }
+               if (ppList) {
+                       free(ppList);
                }
-               free(ppList);
        }
 }
 
@@ -68,7 +71,10 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)
 
        // Node: <privileges>
        xmlNodePtr curPtr = xmlFirstElementChild(xmlDocGetRootElement(docPtr));
-
+       if (curPtr == NULL) {
+               LOGE("Failed to get the element. xmlFirstElementChild() returned NULL.");
+               return -EINVAL;
+       }
        curPtr = curPtr->xmlChildrenNode;
        if (curPtr == NULL) {
                LOGE("No privileges");
@@ -120,6 +126,7 @@ int PKGMGR_PARSER_PLUGIN_INSTALL(xmlDocPtr docPtr, const char* packageId)
                LOGE("Failed to add monitor policy: [%d]", ret);
                return -EIO;
        }
+
        if (temp)
                destroy_char_list(temp, privilegeList.size() + 1);
 
@@ -149,8 +156,6 @@ int PKGMGR_PARSER_PLUGIN_UNINSTALL(xmlDocPtr docPtr, const char* packageId)
                return -EINVAL;
        }
 
-       LOGD("PKGMGR_PARSER_PLUGIN_UNINSTALL() called with [%s].", packageId);
-
        PrivacyGuardClient *pInst = PrivacyGuardClient::getInstance();
 
        int res = pInst->PgDeleteLogsByPackageId(std::string(packageId));
index 2044f9f..5a39e99 100755 (executable)
@@ -152,9 +152,11 @@ CynaraService::getEntriesThread(void* pData)
                        usleep(SLEEP_TIME * 20);        // 1 SEC
 #endif
                } else {
-                       res = CynaraService::updateDb(monitor_entries);
-                       if(res != PRIV_GUARD_ERROR_SUCCESS){
-                               PG_LOGE("CynaraService::updateDb() is failed. [%d]", res);
+                       if (monitor_entries) {
+                               res = CynaraService::updateDb(monitor_entries);
+                               if(res != PRIV_GUARD_ERROR_SUCCESS) {
+                                       PG_LOGE("CynaraService::updateDb() is failed. [%d]", res);
+                               }
                        }
                }
 
@@ -204,10 +206,13 @@ CynaraService::updateDb(cynara_monitor_entry **monitor_entries)
 
                        // check package ID
                        std::string tempPackageId = client;
+                       PG_LOGD("Package ID from cynara: [%s]", client);
                        if (tempPackageId.substr(0, USER_APP_PREFIX_LEN).compare(USER_APP_PREFIX) == 0) {
                                packageId = tempPackageId.substr(USER_APP_PREFIX_LEN, tempPackageId.length() - USER_APP_PREFIX_LEN);
+                               PG_LOGD("Fixed Package ID: [%s]", packageId.c_str());
                        } else {
                                packageId = client;
+                               PG_LOGD("Fixed Package ID: [%s]", client);
                        }
 
                        // datetime
index 33b0e72..ef72cb2 100755 (executable)
@@ -993,19 +993,19 @@ PrivacyGuardDb::PgForeachPackageInfoByPrivacyId(const int userId, const std::str
        static const std::string PKGINFO_SELECT = std::string("SELECT COUNT(*) FROM StatisticsMonitorInfo WHERE USER_ID=? AND PKG_ID=? AND PRIVACY_ID=? AND USE_DATE>=? AND USE_DATE<=?");
        sqlite3_stmt* infoStmt;
        time_t start_date, today_midnight, end_date;
-       struct tm *date = NULL;
+       struct tm date;
 
        // get start~end date (for 7 days)
        end_date = time(NULL);
-       date = localtime(&end_date);
-       PG_LOGD("current (end) time [%d]: %4d/%2d/%2d %2d:%2d", end_date, date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min);
-       date->tm_hour = 0;
-       date->tm_min = 0;
-       date->tm_sec = 0;
-       today_midnight = mktime(date);
+       localtime_r(&end_date, &date);
+       PG_LOGD("current (end) time [%d]: %4d/%2d/%2d %2d:%2d", end_date, date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, date.tm_hour, date.tm_min);
+       date.tm_hour = 0;
+       date.tm_min = 0;
+       date.tm_sec = 0;
+       today_midnight = mktime(&date);
        start_date = today_midnight - (UNIX_TIME_ONE_DAY * (PRIVACY_GUARD_DAYS - 1));
-       date = localtime(&start_date);
-       PG_LOGD("start time [%d]: %4d/%2d/%2d %2d:%2d", start_date, date->tm_year + 1900, date->tm_mon + 1, date->tm_mday, date->tm_hour, date->tm_min);
+       localtime_r(&start_date, &date);
+       PG_LOGD("start time [%d]: %4d/%2d/%2d %2d:%2d", start_date, date.tm_year + 1900, date.tm_mon + 1, date.tm_mday, date.tm_hour, date.tm_min);
 
        // [CYNARA] Flush Entries
        res = cynara_monitor_entries_flush(p_cynara_monitor);
@@ -1056,23 +1056,23 @@ PrivacyGuardDb::PgForeachPackageInfoByPrivacyId(const int userId, const std::str
 
                // prepare
                res = sqlite3_prepare_v2(m_sqlHandler, PKGINFO_SELECT.c_str(), -1, &infoStmt, NULL);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);
 
                // bind
                res = sqlite3_bind_int(infoStmt, 1, userId);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
 
                res = sqlite3_bind_text(infoStmt, 2, p_data.package_id, -1, SQLITE_TRANSIENT);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
 
                res = sqlite3_bind_text(infoStmt, 3, privacyId.c_str(), -1, SQLITE_TRANSIENT);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_text : %d", res);
 
                res = sqlite3_bind_int(infoStmt, 4, start_date);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
 
                res = sqlite3_bind_int(infoStmt, 5, end_date);
-               TryCatchResLogReturn(res == SQLITE_OK, m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
+               TryCatchResLogReturn(res == SQLITE_OK, SAFE_FREE(p_data.package_id); m_dbMutex.unlock(), PRIV_GUARD_ERROR_DB_ERROR, "sqlite3_bind_int : %d", res);
 
                if ((res = sqlite3_step(infoStmt)) == SQLITE_ROW) {
                        int count = sqlite3_column_int(infoStmt, 0);
@@ -1082,6 +1082,7 @@ PrivacyGuardDb::PgForeachPackageInfoByPrivacyId(const int userId, const std::str
                        p_data.count = count;
                        packageInfoList.push_back(p_data);
                }
+
                sqlite3_reset(infoStmt);
        }
        m_dbMutex.unlock();