From 9debcada7c4bcd3705dff128e2705d1dcb9e9fad Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Mon, 10 Jun 2013 17:40:01 +0900 Subject: [PATCH] Rollback smack api Change-Id: I7d7f5e7a0fc442767b8de0e690611bc963796a24 Signed-off-by: Duyoung Jang --- inc/InstallerDefs.h | 11 +--- src/Context/InstallationContext.cpp | 1 + src/Context/InstallationContext.h | 1 + src/Manager/PermissionManager.cpp | 42 ++++++++----- src/Manager/SmackManager.cpp | 122 +++++------------------------------- src/Manager/SmackManager.h | 12 ++-- src/XmlHandler/ManifestHandler.cpp | 5 ++ 7 files changed, 53 insertions(+), 141 deletions(-) diff --git a/inc/InstallerDefs.h b/inc/InstallerDefs.h index 5c7be45..d0e5be2 100755 --- a/inc/InstallerDefs.h +++ b/inc/InstallerDefs.h @@ -23,7 +23,7 @@ #include "InstallerUtil.h" -#define OSP_INSTALLER_VERSION "version=[20130610.2]" +#define OSP_INSTALLER_VERSION "version=[20130610.3]" #define DIR_BIN L"/bin" #define DIR_INFO L"/info" @@ -362,13 +362,4 @@ enum PrivilegeLevel }; -enum SmackDirType -{ - SMACK_DIR_TYPE_PRIVATE, - SMACK_DIR_TYPE_GROUP_RW, - SMACK_DIR_TYPE_PUBLIC_RO, - SMACK_DIR_TYPE_SETTINGS_RW, - -}; - #endif // _INSTALLER_DEFS_H_ diff --git a/src/Context/InstallationContext.cpp b/src/Context/InstallationContext.cpp index 27b6bf8..621543a 100755 --- a/src/Context/InstallationContext.cpp +++ b/src/Context/InstallationContext.cpp @@ -52,6 +52,7 @@ InstallationContext::InstallationContext(void) ,__isVerificationMode(false) ,__isUpdated(false) ,__isAppSetting(false) +,__isAntiVirus(false) ,__isCsc(false) ,__isUninstallable(false) ,__isVirtualRoot(false) diff --git a/src/Context/InstallationContext.h b/src/Context/InstallationContext.h index 592b39e..d6f939d 100755 --- a/src/Context/InstallationContext.h +++ b/src/Context/InstallationContext.h @@ -100,6 +100,7 @@ public: bool __isVerificationMode; bool __isUpdated; bool __isAppSetting; + bool __isAntiVirus; bool __isCsc; bool __isUninstallable; bool __isVirtualRoot; diff --git a/src/Manager/PermissionManager.cpp b/src/Manager/PermissionManager.cpp index 55948c7..8973340 100755 --- a/src/Manager/PermissionManager.cpp +++ b/src/Manager/PermissionManager.cpp @@ -78,22 +78,22 @@ PermissionManager::SetDirectory(InstallationContext* pContext) // appRoot/bin destPath = appRootPath + DIR_BIN; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/info destPath = appRootPath + DIR_INFO; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/res destPath = appRootPath + DIR_RES; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/lib destPath = appRootPath + DIR_LIB; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared destPath = appRootPath + DIR_SHARED; @@ -103,6 +103,7 @@ PermissionManager::SetDirectory(InstallationContext* pContext) TryReturn(!IsFailed(r), INSTALLER_ERROR_INTERNAL_STATE, "Directory::Create() failed"); } InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared/res destPath = appRootPath + DIR_SHARED_RES; @@ -112,21 +113,22 @@ PermissionManager::SetDirectory(InstallationContext* pContext) InstallerUtil::CreateSymlink(iconPath, destPath); } InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared/data destPath = appRootPath + DIR_SHARED_DATA; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PUBLIC_RO); + smackManager.AddLabelSharedDir(packageId, destPath); // appRoot/shared/trusted destPath = appRootPath + DIR_SHARED_TRUSTED; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_GROUP_RW); + smackManager.AddLabelSharedDir(packageId, destPath); // appRoot/contents destPath = appRootPath + DIR_CONTENTS; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/setting destPath = appRootPath + DIR_SETTING; @@ -135,6 +137,10 @@ PermissionManager::SetDirectory(InstallationContext* pContext) String appVersion = pContext->__version; String srcPath; String settingXmlPath; + String label = "*"; + //String label = packageId; + //label.Append("_setting"); + srcPath = destPath + L"/setting." + appVersion + L".xml"; settingXmlPath = destPath + L"/setting.xml"; @@ -142,7 +148,7 @@ PermissionManager::SetDirectory(InstallationContext* pContext) InstallerUtil::CreateSymlink(srcPath, settingXmlPath); InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_WRITE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_SETTINGS_RW); + smackManager.AddLabelDir(label, destPath); } // appRoot/data @@ -153,7 +159,7 @@ PermissionManager::SetDirectory(InstallationContext* pContext) TryReturn(!IsFailed(r), false, "Directory::Create() failed"); } InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); String apiVersion = pContext->__apiVersion; @@ -360,50 +366,52 @@ PermissionManager::ApplyPermissionForRds(InstallationContext* pContext) // appRoot/bin destPath = appRootPath + DIR_BIN; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/info destPath = appRootPath + DIR_INFO; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/res destPath = appRootPath + DIR_RES; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/lib destPath = appRootPath + DIR_LIB; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared destPath = appRootPath + DIR_SHARED; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared/res destPath = appRootPath + DIR_SHARED_RES; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); + smackManager.AddLabelSharedDir(packageId, destPath); // appRoot/shared/data destPath = appRootPath + DIR_SHARED_DATA; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PUBLIC_RO); + smackManager.AddLabelSharedDir(packageId, destPath); // appRoot/shared/trusted destPath = appRootPath + DIR_SHARED_TRUSTED; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_GROUP_RW); + smackManager.AddLabelSharedDir(packageId, destPath); // appRoot/setting destPath = appRootPath + DIR_SETTING; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_WRITE, false); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_SETTINGS_RW); + smackManager.AddLabelDir(packageId, destPath); // appRoot/data destPath = appRootPath + DIR_DATA; InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true); - smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE); + smackManager.AddLabelDir(packageId, destPath); return true; } diff --git a/src/Manager/SmackManager.cpp b/src/Manager/SmackManager.cpp index 464074f..7fb2e99 100755 --- a/src/Manager/SmackManager.cpp +++ b/src/Manager/SmackManager.cpp @@ -81,7 +81,11 @@ SmackManager::Install(const PackageId& packageId) TryReturn(pPackageId, false, "pPackageId is null."); res = Install(pPackageId.get()); - TryReturn(res == 0, false, "Install() failed."); + + if (__pContext->__isAntiVirus == true) + { + RegisterAv(pPackageId.get()); + } return true; } @@ -150,7 +154,6 @@ SmackManager::AddLabelDir(const String& label, const String& dirPath, bool rootD return true; } -#if 0 bool SmackManager::AddLabelSharedDir(const PackageId& packageId, const String& dirPath) { @@ -237,9 +240,7 @@ SmackManager::AddLabelSharedDir(const PackageId& packageId, const String& dirPat return true; } -#endif -#if 0 bool SmackManager::AddSharedDirReaders(const String& label) { @@ -334,7 +335,6 @@ CATCH: return res; } -#endif bool SmackManager::AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2) @@ -423,86 +423,6 @@ SmackManager::RevokePermissions(const PackageId& packageId) } bool -SmackManager::SetupPath(const PackageId& packageId, const String& dirPath, SmackDirType type) -{ - int res = 0; - String realPath; - - std::unique_ptr pPackageId(_StringConverter::CopyToCharArrayN(packageId)); - TryReturn(pPackageId, false, "pPackageId is null."); - - std::unique_ptr pPath(_StringConverter::CopyToCharArrayN(dirPath)); - TryReturn(pPath, false, "pPath is null."); - - if (InstallerUtil::IsSymlink(dirPath) == true) - { - AddLabelDir("_", pPath.get()); - InstallerUtil::GetRealPath(dirPath, realPath); - } - else - { - realPath = dirPath; - } - - std::unique_ptr pRealPath(_StringConverter::CopyToCharArrayN(realPath)); - TryReturn(pRealPath, false, "pRealPath is null."); - - if (type == SMACK_DIR_TYPE_GROUP_RW) - { - String groupId; - - if (__pContext->__isVerificationMode == true) - { - Sha1Hash hash; - String base64Value; - result r = E_SUCCESS; - - IListT* pAuthorCertList = __pContext->__pAuthorCertList; - TryReturn(pAuthorCertList, false, "pAuthorCertList is null."); - - String* pEntity = null; - r = pAuthorCertList->GetAt(0, pEntity); - TryReturn(!IsFailed(r), false, "pAuthorCertList->GetAt() is failed."); - TryReturn(pEntity, false, "pEntity is null."); - - std::unique_ptr pEncodedData(StringUtil::DecodeBase64StringN(*pEntity)); - TryReturn(pEncodedData, false, "pEncodedData is null."); - - std::unique_ptr pHashValue(hash.GetHashN(*pEncodedData.get())); - TryReturn(pHashValue, false, "pHashValue is null."); - - r = StringUtil::EncodeToBase64String(*pHashValue, base64Value); - TryReturn(!IsFailed(r), false, "EncodeToBase64String() is failed."); - - // in smack, '/' is not allowed for label. - r = base64Value.Replace(L"/", L"#"); - TryReturn(!IsFailed(r), false, "base64Value.Replace() is failed."); - - std::unique_ptr pHashEncodedValue(_StringConverter::CopyToCharArrayN(base64Value)); - TryReturn(pHashEncodedValue, false, "pHashEncodedValue is null."); - - groupId = pHashEncodedValue.get(); - AppLog("pHashEncodedValue = [%s]", pHashEncodedValue.get()); - } - else - { - groupId = __pContext->__packageId; - } - - std::unique_ptr pGroupId(_StringConverter::CopyToCharArrayN(groupId)); - TryReturn(pGroupId, false, "pGroupId is null."); - - res = SetupPath(pPackageId.get(), pRealPath.get(), (int) type, pGroupId.get()); - } - else - { - res = SetupPath(pPackageId.get(), pRealPath.get(), (int) type); - } - - return true; -} - -bool SmackManager::IsSmackEnable() { result r; @@ -626,7 +546,6 @@ SmackManager::AddLabelDir(const char* pLabel, const char* pDirPath) return 0; } -#if 0 int SmackManager::AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath) { @@ -659,9 +578,7 @@ SmackManager::AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, co return 0; } -#endif -#if 0 int SmackManager::AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList) { @@ -694,7 +611,6 @@ SmackManager::AddSharedDirReaders(const char* pSharedLabel, const char** ppAppLi return 0; } -#endif int SmackManager::AddFriend(const char* pPackageId1, const char* pPackageId2) @@ -796,45 +712,37 @@ SmackManager::RevokePermissions(const char* pPackageId) } int -SmackManager::SetupPath(const char* pPackageId, const char* pDirPath, int appPathType, const char* pGroupId) +SmackManager::RegisterAv(const char* pPackageId) { int ret = 0; void* pHandle = null; char* pErrorMsg = null; - int (*app_setup_path)(const char*, const char*, int, ...) = null; + int (*app_register_av)(const char*) = null; pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL); if (!pHandle) { - AppLog("dlopen() failed. [%s]", dlerror()); + AppLog("RegisterAv(): dlopen() failed. [%s]", dlerror()); return -1; } - app_setup_path = reinterpret_cast (dlsym(pHandle, "app_setup_path")); + app_register_av = reinterpret_cast (dlsym(pHandle, "app_register_av")); pErrorMsg = dlerror(); - if ((pErrorMsg != null) || (app_setup_path == null)) + if ((pErrorMsg != null) || (app_register_av == null)) { - AppLog("dlsym() failed. [%s]", pErrorMsg); + AppLog("RegisterAv(): dlsym() failed. [%s]", pErrorMsg); dlclose(pHandle); return -1; } - if (pGroupId == null) - { - AppLog("[smack] app_setup_path(%s, %s, %d)", pPackageId, pDirPath, appPathType); - ret = app_setup_path(pPackageId, pDirPath, appPathType); - AppLog("[smack] app_setup_path(), result = [%d]", ret); - } - else - { - AppLog("[smack] app_setup_path(%s, %s, %d, %s)", pPackageId, pDirPath, appPathType, pGroupId); - ret = app_setup_path(pPackageId, pDirPath, appPathType, pGroupId); - AppLog("[smack] app_setup_path(), result = [%d]", ret); - } + 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; + } ArrayList* diff --git a/src/Manager/SmackManager.h b/src/Manager/SmackManager.h index 79b2c9b..2a3f7e3 100755 --- a/src/Manager/SmackManager.h +++ b/src/Manager/SmackManager.h @@ -38,15 +38,13 @@ public: bool Uninstall(const Tizen::App::PackageId& packageId); bool AddLabelDir(const Tizen::Base::String& label, const Tizen::Base::String& dirPath, bool rootDirectory = false); - //bool AddLabelSharedDir(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath); - //bool AddSharedDirReaders(const Tizen::Base::String& label); + bool AddLabelSharedDir(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath); + bool AddSharedDirReaders(const Tizen::Base::String& label); bool AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2); bool EnablePermissions(const Tizen::App::PackageId& packageId); bool RevokePermissions(const Tizen::App::PackageId& packageId); - bool SetupPath(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath, SmackDirType type); - private: bool IsSmackEnable(); @@ -54,14 +52,14 @@ private: int Uninstall(const char* pPackageId); int AddLabelDir(const char* pLabel, const char* pDirPath); - //int AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath); - //int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList); + int AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath); + int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList); int AddFriend(const char* pPackageId1, const char* pPackageId2); int EnablePermissions(const char* pPackageId, int appType, const char** ppPermissions, bool persistent); int RevokePermissions(const char* pPackageId); - int SetupPath(const char* pPackageId, const char* pDirPath, int appPathType, const char* pGroupId = null); + int RegisterAv(const char* pPackageId); Tizen::Base::Collection::ArrayList* GetPreloadedAppListN() const; diff --git a/src/XmlHandler/ManifestHandler.cpp b/src/XmlHandler/ManifestHandler.cpp index 7272388..b29d588 100755 --- a/src/XmlHandler/ManifestHandler.cpp +++ b/src/XmlHandler/ManifestHandler.cpp @@ -1325,6 +1325,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; } -- 2.7.4