Update Cache when app is removed
authorHyunwoo Kim <hwlove.kim@samsung.com>
Fri, 5 Apr 2013 07:36:14 +0000 (16:36 +0900)
committerHyunwoo Kim <hwlove.kim@samsung.com>
Fri, 5 Apr 2013 07:36:25 +0000 (16:36 +0900)
Change-Id: I0a6e2c02f0dac9eaa9ae93d9ad33bf8a5aca2066
Signed-off-by: Hyunwoo Kim <hwlove.kim@samsung.com>
17 files changed:
client/inc/PrivacyManagerClient.h
client/inc/SocketClient.h
client/inc/privacy_manager_client.h
client/src/PrivacyChecker.cpp
client/src/PrivacyManagerClient.cpp
client/src/SocketClient.cpp
client/src/privacy_manager_client.cpp
common/inc/PrivacyManagerTypes.h
common/inc/SocketConnection.h
common/inc/Utils.h
pkgmgr_plugin/privileges.cpp
res/opt/dbspace/.privacylist.db
server/inc/NotificationServer.h
server/src/NotificationServer.cpp
server/src/PrivacyManagerServer.cpp
server/src/SocketService.cpp
server/src/service/PrivacyInfoService.cpp

index ab5cb38..0c7deb5 100644 (file)
@@ -42,9 +42,9 @@ private:
 public:\r
        static PrivacyManagerClient* getInstance(void);\r
 \r
-       int addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list);\r
+       int addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list, bool isServerOperation = true);\r
 \r
-       int removeAppPackagePrivacyInfo(const std::string pkgId);\r
+       int removeAppPackagePrivacyInfo(const std::string pkgId, bool isServerOperation = true);\r
 \r
        int setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled);\r
        \r
index 5445db4..a69e8d0 100644 (file)
@@ -58,84 +58,89 @@ public:
        int connect();\r
        int disconnect();\r
 \r
-       void call(std::string methodName){\r
-               make_call(m_interfaceName);\r
-               make_call(methodName);\r
+       int call(std::string methodName)\r
+       {\r
+               int res = make_call(m_interfaceName);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               res = make_call(methodName);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename ...Args>\r
-       void call(std::string methodName, const Args&... args){\r
-               make_call(m_interfaceName);\r
-               make_call(methodName);\r
-               make_call(args...);\r
+       int call(std::string methodName, const Args&... args)\r
+       {\r
+               int res = make_call(m_interfaceName);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+               res = make_call(methodName);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+               res = make_call(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void read(T* outvalue)\r
+       int read(T* outvalue)\r
        {\r
-                m_socketConnector->read(outvalue);\r
+               return m_socketConnector->read(outvalue);\r
        }\r
 private:\r
        template<typename T, typename ...Args>\r
-       void make_call(const T& invalue, const Args&... args)\r
+       int make_call(const T& invalue, const Args&... args)\r
        {\r
-               make_call(invalue);\r
-               make_call(args...);\r
+               int res = make_call(invalue);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+               res = make_call(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void make_call(const T& invalue)\r
+       int make_call(const T& invalue)\r
        {\r
-//             Try {\r
-                       m_socketConnector->write(invalue);\r
- //       }\r
-  //     Catch (SocketConnection::Exception::SocketConnectionException){\r
- //               LogError("Socket connection write error");\r
-  //             ReThrowMsg(Exception::SocketClientException,"Socket connection write error");\r
- //       }\r
+               return m_socketConnector->write(invalue);\r
        }\r
 \r
        template<typename T, typename ...Args>\r
-       void make_call(const T* invalue, const Args&... args)\r
+       int make_call(const T* invalue, const Args&... args)\r
        {\r
-               make_call(invalue);\r
-               make_call(args...);\r
+               int res = make_call(invalue);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+               res = make_call(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void make_call(const T* invalue)\r
+       int make_call(const T* invalue)\r
        {\r
-//             Try {\r
-                       m_socketConnector->write(invalue);\r
-//             }\r
-//        Catch (SocketConnection::Exception::SocketConnectionException){\r
-//                     LogError("Socket connection write error");\r
-//                ReThrowMsg(Exception::SocketClientException,"Socket connection write error");\r
-//             }\r
+               return m_socketConnector->write(invalue);\r
        }\r
 \r
        template<typename T, typename ...Args>\r
-       void make_call(T * outvalue, const Args&... args)\r
+       int make_call(T * outvalue, const Args&... args)\r
        {\r
-               make_call(outvalue);\r
-               make_call(args...);\r
+               int res = make_call(outvalue);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+               res = make_call(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "make_call : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void make_call(T* outvalue)\r
+       int make_call(T* outvalue)\r
        {\r
-//             Try {\r
-                       m_socketConnector->read(outvalue);\r
-//             }\r
-//             Catch (SocketConnection::Exception::SocketConnectionException){\r
-//                     LogError("Socket connection read error");\r
-//                     ReThrowMsg(Exception::SocketClientException,"Socket connection read error");\r
-//             }\r
-   }\r
+               return m_socketConnector->read(outvalue);\r
+    }\r
 \r
 \r
 private:\r
-       //int throwWithErrnoMessage(const std::string& specificInfo);\r
        std::string m_serverAddress;\r
        std::string m_interfaceName;\r
        std::unique_ptr<SocketConnection> m_socketConnector;\r
index 43741af..aea74dd 100644 (file)
@@ -31,6 +31,7 @@ typedef bool (*privacy_manager_client_packages_by_privacy_cb) (const char *packa
 \r
 EXTERN_API int privacy_manager_client_install_privacy(const char *package_id, const char** privacy_list);\r
 EXTERN_API int privacy_manager_client_uninstall_privacy(const char *package_id);\r
+EXTERN_API int privacy_manager_client_uninstall_privacy_by_server(const char *package_id);\r
 EXTERN_API int privacy_manager_client_foreach_privacy_packages(privacy_manager_client_privacy_packages_cb callback, void *user_data);\r
 EXTERN_API int privacy_manager_client_foreach_get_privacy_info(const char *package_id, privacy_manager_client_privacy_info_cb callback, void* user_data);\r
 EXTERN_API int privacy_manager_client_set_package_privacy(const char *package_id, const char *privacy_id, bool enable);\r
index 8eadd0c..d42a4a2 100644 (file)
@@ -150,7 +150,7 @@ PrivacyChecker::handleNotification(DBusConnection* connection, DBusMessage* mess
 \r
        LOGI("enter");\r
 \r
-       if (dbus_message_is_signal(message, DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_NAME.c_str()))\r
+       if (dbus_message_is_signal(message, DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_SETTING_CHANGED.c_str()))\r
        {\r
                r = dbus_message_get_args(message, &error,\r
                        DBUS_TYPE_STRING, &pPkgId,\r
@@ -175,12 +175,30 @@ PrivacyChecker::handleNotification(DBusConnection* connection, DBusMessage* mess
                }\r
                \r
        }\r
-       else\r
+       else if (dbus_message_is_signal(message, DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_PKG_REMOVED.c_str()))\r
        {\r
-               return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;\r
+               r = dbus_message_get_args(message, &error,\r
+                       DBUS_TYPE_STRING, &pPkgId,\r
+                       DBUS_TYPE_INVALID);\r
+               TryReturn(r, DBUS_HANDLER_RESULT_NOT_YET_HANDLED, , "Fail to get data : %s", error.message);\r
+\r
+               std::lock_guard < std::mutex > guard(m_cacheMutex);\r
+\r
+               std::map < std::string, std::map < std::string, bool > > :: iterator iter = m_privacyInfoCache.find(std::string(pPkgId));\r
+               if (iter != m_privacyInfoCache.end())\r
+               {\r
+                       LOGI("cache for pkg : %d is in cache", pPkgId);\r
+                       m_privacyInfoCache.erase(iter);\r
+               }\r
        }\r
+//     else\r
+//     {\r
+//             return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;\r
+//     }\r
        \r
-       return DBUS_HANDLER_RESULT_HANDLED;\r
+\r
+       // This event is not only for specific handler. All handlers of daemons should be check it and handle it.\r
+       return DBUS_HANDLER_RESULT_NOT_YET_HANDLED;\r
 }\r
 \r
 int\r
index d2633c2..7facd26 100644 (file)
@@ -45,7 +45,7 @@ PrivacyManagerClient::getInstance(void)
 }\r
 \r
 int\r
-PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list)\r
+PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const std::list < std::string >& list, bool isServerOperation)\r
 {\r
 \r
        std::list < std::string > privacyList;\r
@@ -57,38 +57,53 @@ PrivacyManagerClient::addAppPackagePrivacyInfo(const std::string pkgId, const st
        if (privacyList.size() == 0)\r
                return PRIV_MGR_ERROR_SUCCESS;\r
 \r
-#ifdef __READ_DB_IPC__\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, &result);\r
-       m_pSocketClient->disconnect();\r
-\r
-       return result;\r
-#else\r
-       return PrivacyDb::getInstance()->addAppPackagePrivacyInfo(pkgId, privacyList);\r
-#endif\r
+       if (isServerOperation == true)\r
+       {\r
+               int result = PRIV_MGR_ERROR_SUCCESS;\r
+               res = m_pSocketClient->connect();\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+               res = m_pSocketClient->call("addPrivacyInfo", pkgId, privacyList, &result);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+               res = m_pSocketClient->disconnect();\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
+\r
+               return result;\r
+       }\r
+       else\r
+       {\r
+               return PrivacyDb::getInstance()->addAppPackagePrivacyInfo(pkgId, privacyList);\r
+       }\r
 }\r
 \r
 int\r
-PrivacyManagerClient::removeAppPackagePrivacyInfo(const std::string pkgId)\r
+PrivacyManagerClient::removeAppPackagePrivacyInfo(const std::string pkgId, bool isServerOperation)\r
 {\r
-#ifdef __READ_DB_IPC__\r
-       int result;\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("removePrivacyInfo", pkgId, &result);\r
-       m_pSocketClient->disconnect();\r
-       return result;\r
-#else\r
-       return PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
-#endif\r
+       if (isServerOperation == true)\r
+       {\r
+               int result = PRIV_MGR_ERROR_SUCCESS;\r
+               int res = m_pSocketClient->connect();\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+               result = m_pSocketClient->call("removePrivacyInfo", pkgId, &result);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+               result = m_pSocketClient->disconnect();\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
+\r
+               return result;\r
+       }\r
+       else\r
+               return PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
 }\r
 \r
 int\r
 PrivacyManagerClient::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool isEnabled)\r
 {\r
-       int result;\r
-       m_pSocketClient->connect();\r
-       m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);\r
-       m_pSocketClient->disconnect();\r
+       int result = PRIV_MGR_ERROR_SUCCESS;\r
+       int res = m_pSocketClient->connect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+       res = m_pSocketClient->call("setPrivacySetting", pkgId, privacyId, isEnabled, &result);\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+       res = m_pSocketClient->disconnect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
 \r
        return result;\r
 }\r
@@ -97,12 +112,18 @@ int
 PrivacyManagerClient::getPrivacyAppPackages(std::list < std::string >& list)\r
 {\r
 #ifdef __READ_DB_IPC__\r
-       int result, size;\r
-       std::string temp1;\r
-       SocketClient* p = new SocketClient(INTERFACE_NAME);\r
-       p->connect();\r
-       p->call("getPrivacyAppPackages", &result, &size, &list);\r
-       p->disconnect();\r
+\r
+       std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
+\r
+       int result = PRIV_MGR_ERROR_SUCCESS\r
+       int size = 0;\r
+\r
+       int res = pSocketClient->connect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+       res = pSocketClient->call("getPrivacyAppPackages", &result, &size, &list);\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+       res = pSocketClient->disconnect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
 \r
        return result;\r
 #endif\r
@@ -116,11 +137,13 @@ PrivacyManagerClient::getAppPackagePrivacyInfo(const std::string pkgId, std::lis
 #ifdef __READ_DB_IPC__\r
        std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
 \r
-       int result;\r
-       pSocketClient->connect();\r
+       int result = PRIV_MGR_ERROR_SUCCESS;\r
+       int res = pSocketClient->connect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
        pSocketClient->call("getAppPackagePrivacyInfo", pkgId, &result, &list);\r
-\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
        pSocketClient->disconnect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
 \r
        for (std::list < std::pair <std::string, bool > >::const_iterator iter = list.begin(); iter != list.end(); ++iter){\r
                LOGD(" %s : %d", iter->first.c_str(), iter->second);\r
@@ -140,10 +163,13 @@ PrivacyManagerClient::isUserPrompted(const std::string pkgId, bool& isPrompted)
 \r
        std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
 \r
-       int result;\r
-       pSocketClient->connect();\r
-       pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);\r
-       pSocketClient->disconnect();\r
+       int result = PRIV_MGR_ERROR_SUCCESS;\r
+       int res = pSocketClient->connect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+       res = pSocketClient->call("isUserPrompted", pkgId, &result, &isPrompted);\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+       res = pSocketClient->disconnect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
 \r
        LOGI("leave");\r
 \r
@@ -159,10 +185,14 @@ PrivacyManagerClient::setUserPrompted(const std::string pkgId, bool prompted)
 \r
        std::unique_ptr <SocketClient> pSocketClient (new SocketClient(INTERFACE_NAME));\r
 \r
-       int result;\r
-       pSocketClient->connect();\r
-       pSocketClient->call("setUserPrompted", pkgId, prompted, &result);\r
-       pSocketClient->disconnect();\r
+       int result = PRIV_MGR_ERROR_SUCCESS;\r
+       int res = pSocketClient->connect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "connect : %d", res);\r
+       res = pSocketClient->call("setUserPrompted", pkgId, prompted, &result);\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, m_pSocketClient->disconnect(), "call : %d", res);\r
+       res = pSocketClient->disconnect();\r
+       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "disconnect : %d", res);\r
+\r
        LOGI("leave");\r
 \r
        return result;\r
index 991d7b7..743d2d2 100644 (file)
@@ -48,7 +48,7 @@ int SocketClient::connect()
 {\r
        struct sockaddr_un remote;\r
        m_socketFd = socket(AF_UNIX, SOCK_STREAM,0);\r
-       TryReturn( m_socketFd != -1, -1, , "socket : %s", strerror(errno));\r
+       TryReturn( m_socketFd != -1, PRIV_MGR_ERROR_IPC_ERROR, , "socket : %s", strerror(errno));\r
 \r
        int res;\r
        //socket needs to be nonblocking, because read can block after select\r
@@ -56,19 +56,19 @@ int SocketClient::connect()
        if ( (flags = fcntl(m_socketFd, F_GETFL, 0)) == -1 )\r
                flags = 0;\r
        res = fcntl(m_socketFd, F_SETFL, flags | O_NONBLOCK);\r
-       TryReturn( m_socketFd != -1, -1, , "fcntl : %s", strerror(errno));\r
+       TryReturn( m_socketFd != -1, PRIV_MGR_ERROR_IPC_ERROR, , "fcntl : %s", strerror(errno));\r
 \r
        bzero(&remote, sizeof(remote));\r
        remote.sun_family = AF_UNIX;\r
        strcpy(remote.sun_path, m_serverAddress.c_str());\r
        res = ::connect(m_socketFd, (struct sockaddr *)&remote, SUN_LEN(&remote));\r
-       TryReturn( res != -1, -1, , "connect : %s", strerror(errno));\r
+       TryReturn( res != -1, PRIV_MGR_ERROR_IPC_ERROR, , "connect : %s", strerror(errno));\r
 \r
        m_socketConnector.reset(new SocketConnection(m_socketFd));\r
        \r
        LOGI("Client connected");\r
 \r
-       return 0;\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
 }\r
 \r
 int SocketClient::disconnect()\r
@@ -78,5 +78,5 @@ int SocketClient::disconnect()
        close(m_socketFd);\r
        LOGI("Client disconnected");\r
 \r
-       return 0;\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
 }\r
index 3c3c252..8f06890 100644 (file)
@@ -55,7 +55,7 @@ int privacy_manager_client_install_privacy(const char *package_id, const char**
        while (*privacy_list[0] != '\0')\r
                privacyList.push_back(std::string(*privacy_list++));\r
 \r
-       int retval = pInst->addAppPackagePrivacyInfo(std::string(package_id), privacyList);\r
+       int retval = pInst->addAppPackagePrivacyInfo(std::string(package_id), privacyList, false);\r
 \r
        LOGI("leave");\r
 \r
@@ -66,7 +66,14 @@ int privacy_manager_client_uninstall_privacy(const char *package_id)
 {\r
        if (package_id == NULL)\r
                return PRIV_MGR_ERROR_INVALID_PARAMETER;\r
-       return PrivacyManagerClient::getInstance()->removeAppPackagePrivacyInfo(std::string(package_id));\r
+       return PrivacyManagerClient::getInstance()->removeAppPackagePrivacyInfo(std::string(package_id), false);\r
+}\r
+\r
+int privacy_manager_client_uninstall_privacy_by_server(const char *package_id)\r
+{\r
+       if (package_id == NULL)\r
+               return PRIV_MGR_ERROR_INVALID_PARAMETER;\r
+       return PrivacyManagerClient::getInstance()->removeAppPackagePrivacyInfo(std::string(package_id), true);\r
 }\r
 \r
 int privacy_manager_client_foreach_privacy_packages(privacy_manager_client_privacy_packages_cb callback, void *user_data)\r
index 5f7e128..437d810 100644 (file)
@@ -25,6 +25,7 @@ static const std::string PRIVACY_INFO_DB_PATH("/opt/dbspace/.privacylist.db");
 static const std::string SERVER_ADDRESS ("/tmp/privacy_manager_server");\r
 static const std::string DBUS_PATH("/privacy_manager/dbus_notification");\r
 static const std::string DBUS_SIGNAL_INTERFACE("org.tizen.privacy_manager.signal");\r
-static const std::string DBUS_SIGNAL_NAME("privacy_setting_updated");\r
+static const std::string DBUS_SIGNAL_SETTING_CHANGED("privacy_setting_changed");\r
+static const std::string DBUS_SIGNAL_PKG_REMOVED("privacy_pkg_removed");\r
 \r
 #endif\r
index dda7082..3fa291d 100644 (file)
@@ -24,6 +24,7 @@
 #include <SocketStream.h>\r
 #include <PrivacyManagerTypes.h>\r
 #include <iostream>\r
+#include <Utils.h>\r
 /*\r
  * This class implements interface for generic read and write from given socket.\r
  * It does not maintain socket descriptor, so any connecting and disconnecting should be\r
@@ -44,199 +45,279 @@ public:
        }\r
 \r
        template<typename T, typename ...Args>\r
-       void read(T* out, const Args&... args )\r
+       int read(T* out, const Args&... args )\r
        {\r
-               read(out);\r
-               read(args...);\r
+               int res = read(out);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
+               res = read(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void read(T* out)\r
+       int read(T* out)\r
        {\r
                int length = 0;\r
-               int ret = m_socketStream.readStream(sizeof(length), &length);\r
-               char* pBuf = new char[length + 1];\r
-               m_socketStream.readStream(length, pBuf);\r
+               int res = m_socketStream.readStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "readStream : %d", res);\r
+               char* pBuf = new (std::nothrow) char[length + 1];\r
+               TryReturn(pBuf != NULL, PRIV_MGR_ERROR_OUT_OF_MEMORY, , "new : %d", PRIV_MGR_ERROR_OUT_OF_MEMORY);\r
+\r
+               res = m_socketStream.readStream(length, pBuf);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, delete[] pBuf, "readStream : %d", res);\r
+\r
                pBuf[length] = 0;\r
 \r
                out = T(pBuf);\r
 \r
                delete[] pBuf;\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
        \r
-       void read(bool* pB)\r
-       {\r
-               \r
+       int read(bool* pB)\r
+       {               \r
                int length = 0;\r
-               int ret = m_socketStream.readStream(sizeof(length), &length);\r
-               if (ret < 0)\r
-               {}\r
-               char* pBuf = new char[length + 1];\r
-               m_socketStream.readStream(length, pBuf);\r
+               int res = m_socketStream.readStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "readStream : %d", res);\r
+\r
+               char* pBuf = new (std::nothrow) char[length + 1];\r
+               TryReturn(pBuf != NULL, PRIV_MGR_ERROR_OUT_OF_MEMORY, , "new : %d", PRIV_MGR_ERROR_OUT_OF_MEMORY);\r
+\r
+               res = m_socketStream.readStream(length, pBuf);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, delete[] pBuf, "readStream : %d", res);\r
+\r
                pBuf[length] = 0;\r
 \r
                *pB = * reinterpret_cast <bool* > (pBuf);\r
 \r
                delete[] pBuf;\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void read(bool& b)\r
+       int read(bool& b)\r
        {\r
-               read(&b);\r
+               return read(&b);\r
        }\r
        \r
-       void read(int& i)\r
+       int read(int& i)\r
        {\r
-               read(&i);\r
+               return read(&i);\r
        }\r
-       void read(int* pI)\r
+\r
+       int read(int* pI)\r
        {\r
                int length = 0;\r
-               int ret = m_socketStream.readStream(sizeof(length), &length);\r
-               if (ret < 0)\r
-               {}\r
-               char* pBuf = new char[length + 1];\r
-               m_socketStream.readStream(length, pBuf);\r
+               int res = m_socketStream.readStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "readStream : %d", res);\r
+\r
+               char* pBuf = new (std::nothrow) char[length + 1];\r
+               TryReturn(pBuf != NULL, PRIV_MGR_ERROR_OUT_OF_MEMORY, , "new : %d", PRIV_MGR_ERROR_OUT_OF_MEMORY);\r
+\r
+               res = m_socketStream.readStream(length, pBuf);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, delete[] pBuf, "readStream : %d", res);\r
+\r
                pBuf[length] = 0;\r
 \r
                *pI = * reinterpret_cast <int* > (pBuf);\r
 \r
                delete[] pBuf;\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void read(std::string* pStr)\r
+       int read(std::string* pStr)\r
        {\r
                int length = 0;\r
-               int ret = m_socketStream.readStream(sizeof(length), &length);\r
-               if (ret < 0)\r
-               {}\r
-               char* pBuf = new char[length + 1];\r
+               int res = m_socketStream.readStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "readStream : %d", res);\r
+\r
+               char* pBuf = new (std::nothrow) char[length + 1];\r
+               TryReturn(pBuf != NULL, PRIV_MGR_ERROR_OUT_OF_MEMORY, , "new : %d", PRIV_MGR_ERROR_OUT_OF_MEMORY);\r
+\r
                m_socketStream.readStream(length, pBuf);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, delete[] pBuf, "readStream : %d", res);\r
+\r
                pBuf[length] = 0;\r
 \r
                *pStr = std::string(pBuf);\r
                delete[] pBuf;\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
        \r
-       void read(std::string& str)\r
+       int read(std::string& str)\r
        {\r
-               read(&str);\r
+               return read(&str);\r
        }\r
 \r
        template < typename T >\r
-       void read (std::list<T>& list) \r
+       int  read (std::list<T>& list) \r
        {\r
                int length;\r
-               read(length);\r
-               for (int i =0; i < length; ++i) \r
+               int res = read(length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
+\r
+               for (int i = 0; i < length; ++i) \r
                {\r
                        T obj;\r
-                       read (obj);\r
+                       res = read (obj);\r
+                       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
                        list.push_back(obj);\r
                }\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template < typename T >\r
-       void read (std::list<T>* pList) \r
+       int read (std::list<T>* pList) \r
        {\r
-               read(*pList);\r
+               return read(*pList);\r
        }\r
 \r
        template < typename K, typename P >\r
        void read (std::pair<K, P>& pair) \r
        {\r
-               read( pair.first);\r
-               read( pair.second);\r
+               int res = read( pair.first);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
+               res = read( pair.second);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "read : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template < typename K, typename P >\r
-       void read (std::pair<K, P>* pPair) \r
+       int read (std::pair<K, P>* pPair) \r
        {\r
-               read( *pPair);\r
+               return read( *pPair);\r
        }\r
 \r
        template<typename T, typename ...Args>\r
-       void write(const T& in, const Args&... args)\r
+       int write(const T& in, const Args&... args)\r
        {\r
-               write(in);\r
-               write(args...);\r
+               int res = write(in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               res = write(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void write(const std::string& in)\r
+       int write(const std::string& in)\r
        {\r
                int length = in.size();\r
-               m_socketStream.writeStream(sizeof(length), &length);\r
-               m_socketStream.writeStream(length, in.c_str());\r
+               int res = m_socketStream.writeStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+               res = m_socketStream.writeStream(length, in.c_str());\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
        \r
-       void write(const unsigned int& in)\r
+       int write(const unsigned int& in)\r
        {\r
                int length = sizeof(in);\r
-               m_socketStream.writeStream(sizeof(length), &length);\r
-               m_socketStream.writeStream(length, &in);\r
+               int res = m_socketStream.writeStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+               res = m_socketStream.writeStream(length, &in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void write(const int& in)\r
+       int write(const int& in)\r
        {\r
                int length = sizeof(in);\r
-               m_socketStream.writeStream(sizeof(length), &length);\r
-               m_socketStream.writeStream(length, &in);\r
+               int res = m_socketStream.writeStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+               res = m_socketStream.writeStream(length, &in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void write(const bool& in)\r
+       int write(const bool& in)\r
        {\r
                int length = sizeof(in);\r
-               m_socketStream.writeStream(sizeof(length), &length);\r
-               m_socketStream.writeStream(length, &in);\r
+               int res = m_socketStream.writeStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+               res = m_socketStream.writeStream(length, &in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
-       void write(const char*& in)\r
+       int write(const char*& in)\r
        {\r
                int length = strlen(in);\r
-               m_socketStream.writeStream(sizeof(length), &length);\r
-               m_socketStream.writeStream(length, in);\r
+               int res = m_socketStream.writeStream(sizeof(length), &length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+               LOGD(" write char : %s %d", in, length);\r
+               res = m_socketStream.writeStream(length, in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "writeStream : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T, typename ...Args>\r
-       void write(const T* in, const Args&... args)\r
+       int write(const T* in, const Args&... args)\r
        {\r
-               write(in);\r
-               write(args...);\r
+               int res = write(in);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               res = write(args...);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename K, typename T>\r
-       void write(const std::pair<K, T> p)\r
+       int write(const std::pair<K, T> p)\r
        {\r
-               write(p.first);\r
-               write(p.second);\r
+               int res = write(p.first);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               res = write(p.second);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename K, typename T>\r
-       void write(const std::pair<K, T&> p) \r
+       int write(const std::pair<K, T&> p)\r
        {\r
-               write(p.first);\r
-               write(p.second);\r
+               int res = write(p.first);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               res = write(p.second);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename K, typename T>\r
-       void write(const std::pair<K, T&>* pPair) \r
+       int write(const std::pair<K, T&>* pPair) \r
        {\r
-               write(*pPair);\r
+               return write(*pPair);\r
        }\r
 \r
        template<typename T>\r
-       void write(const std::list <T> list) \r
+       int write(const std::list <T> list) \r
        {\r
                int length = list.size();\r
-               write(length);\r
-               for (typename std::list <T>::const_iterator iter = list.begin(); iter != list.end(); iter++)\r
-                       write(*iter);\r
+               int res = write(length);\r
+               TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               for (typename std::list <T>::const_iterator iter = list.begin(); iter != list.end(); iter++) {\r
+                       res = write(*iter);\r
+                       TryReturn(res == PRIV_MGR_ERROR_SUCCESS, res, , "write : %d", res);\r
+               }\r
+\r
+               return PRIV_MGR_ERROR_SUCCESS;\r
        }\r
 \r
        template<typename T>\r
-       void write(const std::list <T>* pList) \r
+       int write(const std::list <T>* pList) \r
        {\r
-               write(*pList);\r
+               return write(*pList);\r
        }\r
 \r
 \r
index 0589924..7bfcbbc 100644 (file)
                return r; \\r
        } else {;}\r
 \r
-auto StmtDeleter = [&](sqlite3_stmt* pPtr) { LOGI("sqlite3_finalize"); sqlite3_reset (pPtr); sqlite3_finalize(pPtr); };\r
-auto DbDeleter = [&](sqlite3* pPtr) { LOGI("sqlite3_close"); sqlite3_close(pPtr); };\r
+auto StmtDeleter = [&](sqlite3_stmt* pPtr) { /*LOGI("sqlite3_finalize");*/ sqlite3_reset (pPtr); sqlite3_finalize(pPtr); };\r
+auto DbDeleter = [&](sqlite3* pPtr) { /*LOGI("sqlite3_close");*/ sqlite3_close(pPtr); };\r
 \r
 #define setStmtToUniquePtr(x, y)               std::unique_ptr < sqlite3_stmt, decltype(StmtDeleter) > x (y, StmtDeleter);\r
 #define setDbToUniquePtr(x, y)                 std::unique_ptr < sqlite3, decltype(DbDeleter) > x (y, DbDeleter);\r
 \r
 #define openDb(dbpath, pHandler, mode) sqlite3* pHandler##Temp = NULL;\\r
        {\\r
-               LOGI("sqlite3_open_v2");\\r
+               /*LOGI("sqlite3_open_v2");*/\\r
                int res = sqlite3_open_v2(dbpath, &pHandler##Temp, mode , NULL);\\r
                TryCatchResLogReturn( res == SQLITE_OK, , PRIV_MGR_ERROR_DB_ERROR, "sqlite3_open : %d", res);\\r
        }\\r
@@ -61,7 +61,7 @@ auto DbDeleter = [&](sqlite3* pPtr) { LOGI("sqlite3_close"); sqlite3_close(pPtr)
        \r
 #define prepareDb(pHandler, sql, pStmt)        sqlite3_stmt* pStmt##Temp;\\r
        {\\r
-               LOGI("sqlite3_prepare_v2");\\r
+               /*LOGI("sqlite3_prepare_v2");*/\\r
                int res = sqlite3_prepare_v2(pHandler.get(), sql, -1, & pStmt##Temp, NULL);\\r
                TryCatchResLogReturn( res == SQLITE_OK, , PRIV_MGR_ERROR_DB_ERROR, "sqlite3_prepare_v2 : %d", res);\\r
        }\\r
index e52cffb..d5cdc8b 100644 (file)
@@ -113,8 +113,19 @@ int PKGMGR_PARSER_PLUGIN_UNINSTALL(xmlDocPtr docPtr, const char* packageId)
 {\r
        LOGI("enter");\r
 \r
-       privacy_manager_client_uninstall_privacy(packageId);\r
+       int res = privacy_manager_client_uninstall_privacy_by_server(packageId);\r
+       if (res != PRIV_MGR_ERROR_SUCCESS)\r
+       {\r
+               LOGD("Failed to uninstall privacy in server: %d", res);\r
+               \r
+               res = privacy_manager_client_uninstall_privacy(packageId);\r
+               if (res != PRIV_MGR_ERROR_SUCCESS)\r
+               {\r
+                       LOGD("Failed to uninstall privacy: %d", res);\r
+                       return -EINVAL;\r
+               }\r
+       }\r
 \r
+       LOGI("leave");\r
        return 0;\r
-       LOGI("leave");  \r
 }\r
index 26eeff5..252a7bc 100644 (file)
Binary files a/res/opt/dbspace/.privacylist.db and b/res/opt/dbspace/.privacylist.db differ
index ea18277..81117ae 100644 (file)
@@ -34,7 +34,8 @@ public:
        NotificationServer(void);\r
        ~NotificationServer(void);\r
        int initialize(void);\r
-       int notify(const std::string pkgId, const std::string privacyId);\r
+       int notifySettingChanged(const std::string pkgId, const std::string privacyId);\r
+       int notifyPkgRemoved(const std::string pkgId);\r
 };\r
 \r
 \r
index 4f244cc..ce8bd64 100644 (file)
@@ -65,7 +65,7 @@ NotificationServer::initialize(void)
 }\r
 \r
 int\r
-NotificationServer::notify(const std::string pkgId, const std::string privacyId)\r
+NotificationServer::notifySettingChanged(const std::string pkgId, const std::string privacyId)\r
 {\r
        LOGI("enter");\r
 \r
@@ -74,8 +74,8 @@ NotificationServer::notify(const std::string pkgId, const std::string privacyId)
 \r
        char* pPkgId = const_cast <char*> (pkgId.c_str());\r
        char* pPrivacyId = const_cast <char*> (privacyId.c_str());\r
-       LOGD("path: %s, inter: %s, name: %s", DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_NAME.c_str());\r
-       DBusMessage* pMessage = dbus_message_new_signal(DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_NAME.c_str());\r
+       LOGD("path: %s, inter: %s, name: %s", DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_SETTING_CHANGED.c_str());\r
+       DBusMessage* pMessage = dbus_message_new_signal(DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_SETTING_CHANGED.c_str());\r
        TryReturn(pMessage != NULL, PRIV_MGR_ERROR_IPC_ERROR, , "dbus_message_new_signal");\r
 \r
        dbus_bool_t r;\r
@@ -94,4 +94,34 @@ NotificationServer::notify(const std::string pkgId, const std::string privacyId)
        LOGI("leave");\r
 \r
        return PRIV_MGR_ERROR_SUCCESS;\r
+}\r
+\r
+int\r
+NotificationServer::notifyPkgRemoved(const std::string pkgId)\r
+{\r
+       LOGI("enter");\r
+\r
+       if (!m_initialized)\r
+               return PRIV_MGR_ERROR_INVALID_STATE;\r
+\r
+       char* pPkgId = const_cast <char*> (pkgId.c_str());\r
+       LOGD("path: %s, inter: %s, name: %s", DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_PKG_REMOVED.c_str());\r
+       DBusMessage* pMessage = dbus_message_new_signal(DBUS_PATH.c_str(), DBUS_SIGNAL_INTERFACE.c_str(), DBUS_SIGNAL_PKG_REMOVED.c_str());\r
+       TryReturn(pMessage != NULL, PRIV_MGR_ERROR_IPC_ERROR, , "dbus_message_new_signal");\r
+\r
+       dbus_bool_t r;\r
+       r = dbus_message_append_args(pMessage,\r
+               DBUS_TYPE_STRING, &pPkgId,\r
+               DBUS_TYPE_INVALID);\r
+       TryReturn(r, PRIV_MGR_ERROR_IPC_ERROR, , "dbus_message_append_args");\r
+\r
+       r = dbus_connection_send(m_pDBusConnection, pMessage, NULL);\r
+       TryReturn(r, PRIV_MGR_ERROR_IPC_ERROR, dbus_message_unref(pMessage);, "dbus_connection_send");\r
+\r
+       dbus_connection_flush(m_pDBusConnection);\r
+       dbus_message_unref(pMessage);\r
+\r
+       LOGI("leave");\r
+\r
+       return PRIV_MGR_ERROR_SUCCESS;\r
 }
\ No newline at end of file
index 6492563..85f38b4 100644 (file)
@@ -33,11 +33,13 @@ PrivacyManagerServer::createDB(void)
 int\r
 PrivacyManagerServer::setPrivacySetting(const std::string pkgId, const std::string privacyId, bool enabled)\r
 {\r
+       LOGD("Set Privacy: %s, %s, %d", pkgId.c_str(), privacyId.c_str(), enabled);\r
+\r
        int res = PrivacyDb::getInstance()->setPrivacySetting(pkgId, privacyId, enabled);\r
        TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "privacyDb::setPrivacySetting : %d", res);\r
 \r
-       res = m_notificationServer.notify(pkgId, privacyId);\r
-       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "NotificationServer::notify : %d", res);\r
+       res = m_notificationServer.notifySettingChanged(pkgId, privacyId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "NotificationServer::notifySettingChanged : %d", res);\r
 \r
        return res;\r
 }\r
@@ -64,7 +66,13 @@ PrivacyManagerServer::addAppPackagePrivacyInfo(const std::string pkgId, const st
 int\r
 PrivacyManagerServer::removeAppPackagePrivacyInfo(const std::string pkgId)\r
 {\r
-       return PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
+       int res = PrivacyDb::getInstance()->removeAppPackagePrivacyInfo(pkgId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "privacyDb::removeAppPackagePrivacyInfo : %d", res);\r
+\r
+       res = m_notificationServer.notifyPkgRemoved(pkgId);\r
+       TryReturn( res == PRIV_MGR_ERROR_SUCCESS, res, , "NotificationServer::notifyPkgRemoved : %d", res);\r
+\r
+       return res;\r
 }\r
 \r
 int\r
index 8695ca0..3019da0 100644 (file)
@@ -240,7 +240,12 @@ SocketService::connectionService(int fd)
        SocketConnection connector = SocketConnection(fd);\r
        std::string interfaceName, methodName;\r
 \r
-       connector.read(&interfaceName, &methodName);\r
+       int res = connector.read(&interfaceName, &methodName);\r
+       if (res != PRIV_MGR_ERROR_SUCCESS)\r
+       {\r
+               LOGE("read : %d", res);\r
+               return res;\r
+       }\r
 \r
        LOGD("Got interface : %s", interfaceName.c_str());\r
        LOGD("Got method : %s",  methodName.c_str());\r
index d822e13..a39698f 100644 (file)
@@ -55,7 +55,7 @@ PrivacyInfoService::setPrivacySetting(SocketConnection* pConnector)
 \r
        std::string pkgId;\r
        std::string privacyId;\r
-       bool enabled;\r
+       bool enabled = false;\r
        pConnector->read(&pkgId, &privacyId, &enabled);\r
 \r
        PrivacyManagerServer* pPrivacyManagerServer = PrivacyManagerServer::getInstance();\r
@@ -121,7 +121,7 @@ PrivacyInfoService::setUserPrompted(SocketConnection* pConnector)
        LOGI("enter");\r
 \r
        std::string pkgId;\r
-       bool prompted;\r
+       bool prompted = false;\r
 \r
        pConnector->read(&pkgId, &prompted);\r
        PrivacyManagerServer* pPrivacyManagerServer = PrivacyManagerServer::getInstance();\r