Add smack api for anti-virus
authorDuyoung Jang <duyoung.jang@samsung.com>
Fri, 26 Apr 2013 11:29:36 +0000 (20:29 +0900)
committerDuyoung Jang <duyoung.jang@samsung.com>
Fri, 26 Apr 2013 11:29:36 +0000 (20:29 +0900)
Change-Id: Id4ed2839e240eee43644041f84bc452b1730fa35
Signed-off-by: Duyoung Jang <duyoung.jang@samsung.com>
inc/InstallerDefs.h
src/Context/InstallationContext.cpp
src/Context/InstallationContext.h
src/Manager/SmackManager.cpp
src/Manager/SmackManager.h
src/XmlHandler/ManifestHandler.cpp

index bce564f..dbf5257 100755 (executable)
@@ -23,7 +23,7 @@
 
 #include "InstallerUtil.h"
 
-#define OSP_INSTALLER_VERSION "version=[20130426.1]"
+#define OSP_INSTALLER_VERSION "version=[20130426.2]"
 
 #define DIR_BIN                                L"/bin"
 #define DIR_INFO                       L"/info"
 #define TIZEN_CATEGORY_HOMESCREEN                              "http://tizen.org/category/homescreen"
 #define TIZEN_CATEGORY_LOCKSCREEN                              "http://tizen.org/category/lockscreen"
 #define TIZEN_CATEGORY_MENUSCREEN                              "http://tizen.org/category/menuscreen"
+#define TIZEN_CATEGORY_ANTIVIRUS                               "http://tizen.org/category/antivirus"
 
 #define DIR_APPLICATIONS_TMP                                   "/opt/usr/apps/tmp"
 
index a72aa61..8e36bef 100755 (executable)
@@ -52,6 +52,7 @@ InstallationContext::InstallationContext(void)
 ,__isVerificationMode(false)
 ,__isUpdated(false)
 ,__isAppSetting(false)
+,__isAntiVirus(false)
 ,__operation(INSTALLER_OPERATION_INSTALL)
 ,__storage(INSTALLATION_STORAGE_INTERNAL)
 ,__rootCertType(ROOT_CERTIFICATE_NONE)
index 84d9565..ca70c7f 100755 (executable)
@@ -101,6 +101,7 @@ public:
        bool __isVerificationMode;
        bool __isUpdated;
        bool __isAppSetting;
+       bool __isAntiVirus;
 
        InstallerOperation __operation;
        InstallationStorage __storage;
index db617ac..b9e16f2 100755 (executable)
@@ -72,6 +72,8 @@ SmackManager::Install(const PackageId& packageId)
                return true;
        }
 
+       TryReturn(__pContext, false, "__pContext is null");
+
        int res = 0;
 
        std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
@@ -79,6 +81,11 @@ SmackManager::Install(const PackageId& packageId)
 
        res = Install(pPackageId.get());
 
+       if (__pContext->__isAntiVirus == true)
+       {
+               RegisterAv(pPackageId.get());
+       }
+
        return true;
 }
 
@@ -774,6 +781,40 @@ SmackManager::RevokePermissions(const char* pPackageId)
        return 0;
 }
 
+int
+SmackManager::RegisterAv(const char* pPackageId)
+{
+       int ret = 0;
+       void* pHandle = null;
+       char* pErrorMsg = null;
+       int (*app_register_av)(const char*) = null;
+
+       pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
+       if (!pHandle)
+       {
+               AppLog("RegisterAv(): dlopen() failed. [%s]", dlerror());
+               return -1;
+       }
+
+       app_register_av = reinterpret_cast <int (*)(const char*)>(dlsym(pHandle, "app_register_av"));
+       pErrorMsg = dlerror();
+       if ((pErrorMsg != null) || (app_register_av == null))
+       {
+               AppLog("RegisterAv(): dlsym() failed. [%s]", pErrorMsg);
+               dlclose(pHandle);
+               return -1;
+       }
+
+       AppLog("[smack] app_register_av(%s)", pPackageId);
+       ret = app_register_av(pPackageId);
+       AppLog("[smack] app_register_av(%s), result = [%d]", pPackageId, ret);
+
+       dlclose(pHandle);
+
+       return ret;
+
+}
+
 #if 0
 int
 SmackManager::AddPermissions(const char* pPackageId, const char** ppPermissions)
index 8c81664..d3fd9bf 100755 (executable)
@@ -60,6 +60,8 @@ private:
        int EnablePermissions(const char* pPackageId, int appType, const char** ppPermissions, bool persistent);
        int RevokePermissions(const char* pPackageId);
 
+       int RegisterAv(const char* pPackageId);
+
        // deprecated
        //int AddPermissions(const char* pPackageId, const char** ppPermissions);
 
index 9012a7e..7a0fbd0 100755 (executable)
@@ -1225,6 +1225,11 @@ ManifestHandler::OnCategoryValue(const char* pCharacters)
        {
                __pAppData->__feature = CATEGORY_TYPE_IME;
        }
+       else if (strcasecmp(pCharacters, TIZEN_CATEGORY_ANTIVIRUS) == 0)
+       {
+               AppLog("ANTIVIRUS Package is detected.");
+               __pContext->__isAntiVirus = true;
+       }
 
        return true;
 }