From 799697b8a5a4c455829955a8def49d187175822e Mon Sep 17 00:00:00 2001 From: Duyoung Jang Date: Thu, 2 May 2013 10:57:46 +0900 Subject: [PATCH] Smack api is updated. (share folder, script) Change-Id: I49f0bff52b71983f9d9574c30f95f537fdda5aa0 Signed-off-by: Duyoung Jang --- inc/InstallerDefs.h | 2 +- src/Manager/PermissionManager.cpp | 2 +- src/Manager/SmackManager.cpp | 143 +++++--------------------------------- src/Manager/SmackManager.h | 4 -- 4 files changed, 18 insertions(+), 133 deletions(-) diff --git a/inc/InstallerDefs.h b/inc/InstallerDefs.h index 975fb5e..46c2cb1 100755 --- a/inc/InstallerDefs.h +++ b/inc/InstallerDefs.h @@ -23,7 +23,7 @@ #include "InstallerUtil.h" -#define OSP_INSTALLER_VERSION "version=[20130502.1]" +#define OSP_INSTALLER_VERSION "version=[20130502.2]" #define DIR_BIN L"/bin" #define DIR_INFO L"/info" diff --git a/src/Manager/PermissionManager.cpp b/src/Manager/PermissionManager.cpp index 6fbd18e..2cd3e23 100755 --- a/src/Manager/PermissionManager.cpp +++ b/src/Manager/PermissionManager.cpp @@ -104,7 +104,7 @@ PermissionManager::SetDirectory(InstallationContext* pContext) InstallerUtil::CreateSymlink(iconPath, destPath); } InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false); - smackManager.AddLabelSharedDir(packageId, destPath); + smackManager.AddLabelDir(packageId, destPath); // appRoot/shared/data destPath = appRootPath + DIR_SHARED_DATA; diff --git a/src/Manager/SmackManager.cpp b/src/Manager/SmackManager.cpp index b9e16f2..dc27e8b 100755 --- a/src/Manager/SmackManager.cpp +++ b/src/Manager/SmackManager.cpp @@ -134,7 +134,7 @@ SmackManager::AddLabelDir(const String& label, const String& dirPath, bool rootD std::unique_ptr pRealPath(_StringConverter::CopyToCharArrayN(realPath)); TryReturn(pRealPath, false, "pRealPath is null"); - if (rootDirectory == true) + if ((rootDirectory == true) || (dirPath.Contains(L"/shared/res") == true)) { res = AddLabelDir("_", pRealPath.get()); } @@ -180,22 +180,22 @@ SmackManager::AddLabelSharedDir(const PackageId& packageId, const String& dirPat if (dirPath.Contains(L"shared/data") == true) { - label = L"*"; + //label = L"*"; -#if 0 - if (__pContext->__isPreloaded == false) - { + //if (__pContext->__isPreloaded == false) + //{ label.Append("_shareddata"); AddSharedDirReaders(label); - } -#endif + //} return true; } +#if 0 else if (dirPath.Contains(L"shared/res") == true) { label = L"_"; } +#endif else if (dirPath.Contains(L"shared/trusted") == true) { Sha1Hash hash; @@ -277,6 +277,12 @@ SmackManager::AddSharedDirReaders(const Tizen::Base::String& label) { PackageId packageId = pPackageInfo->GetId(); + if (packageId == __pContext->__packageId) + { + AppLog("packageId [%ls] is skipped.", packageId.GetPointer()); + continue; + } + std::unique_ptr pPackageId(_StringConverter::CopyToCharArrayN(packageId)); TryCatch(pPackageId, res = false, "pPackageId is null."); @@ -292,7 +298,7 @@ SmackManager::AddSharedDirReaders(const Tizen::Base::String& label) CATCH: for (int i = 0; pList[i] != null; i++) { - // AppLog("delete Package - [%s]", pList[i]); + AppLog("delete Package - [%s]", pList[i]); delete[] pList[i]; } delete[] pList; @@ -359,79 +365,8 @@ SmackManager::EnablePermissions(const PackageId& packageId) delete[] pList; } - if ((__pContext->__isPreloaded == true) && (__pContext->__isUpdated == false)) - { - String smackFile(L"/etc/smack/accesses2.d/"); - smackFile.Append(packageId); - smackFile.Append(L"-temp.rule"); - - String smackContext(packageId); - smackContext.Append(L" all.rule include"); - - InstallerUtil::CreateInfoFile(smackFile, &smackContext); - } - else - { - String script("/usr/bin/smackload-app.sh"); - bool exist = File::IsFileExist(script); - script.Append(L" "); - script.Append(packageId); - - std::unique_ptr pScript(_StringConverter::CopyToCharArrayN(script)); - TryReturn(pScript, false, "pScript is null."); - - if (exist == true) - { - res = system(pScript.get()); - AppLog("[smack] system(%s), result = [%d]", pScript.get(), res); - } - else - { - AppLog("[%ls] not found", script.GetPointer()); - } - } - - return true; -} - #if 0 -bool -SmackManager::AddPermissions(const PackageId& packageId) -{ - if (__isSmackEnable == false) - { - return true; - } - - TryReturn(__pContext, false, "__pContext is null"); - - int res = 0; - - std::unique_ptr pPackageId(_StringConverter::CopyToCharArrayN(packageId)); - TryReturn(pPackageId, false, "pPackageId is null."); - - int count = __pContext->__pPrivilegeList->GetCount(); - - const char** pList = new (std::nothrow) const char*[count+1]; - TryReturn(pList, false, "pList is null."); - - for (int i = 0; i < count; i++) - { - String* pPrivilege = dynamic_cast < String* >(__pContext->__pPrivilegeList->GetAt(i)); - if (pPrivilege) - { - char* pPrivilegeString = _StringConverter::CopyToCharArrayN(*pPrivilege); - TryReturn(pPrivilegeString, false, "pPrivilegeString is null."); - - pList[i] = pPrivilegeString; - } - } - - pList[count] = null; - - res = AddPermissions(pPackageId.get(), pList); - - if (__pContext->__isPreloaded == true) + if ((__pContext->__isPreloaded == true) && (__pContext->__isUpdated == false)) { String smackFile(L"/etc/smack/accesses2.d/"); smackFile.Append(packageId); @@ -462,17 +397,10 @@ SmackManager::AddPermissions(const PackageId& packageId) AppLog("[%ls] not found", script.GetPointer()); } } - - for (int i = 0; pList[i] != null; i++) - { - AppLog("delete Privilege - [%s]", pList[i]); - delete[] pList[i]; - } - delete[] pList; +#endif return true; } -#endif bool SmackManager::RevokePermissions(const PackageId& packageId) @@ -814,42 +742,3 @@ SmackManager::RegisterAv(const char* pPackageId) return ret; } - -#if 0 -int -SmackManager::AddPermissions(const char* pPackageId, const char** ppPermissions) -{ - int ret = 0; - void* pHandle = null; - char* pErrorMsg = null; - int (*app_add_permissions)(const char*, const char**) = null; - - pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL); - if (!pHandle) - { - AppLog("AddPermissions(): dlopen() failed. [%s][%s]", pPackageId, dlerror()); - return -1; - } - - app_add_permissions = reinterpret_cast (dlsym(pHandle, "app_add_permissions")); - pErrorMsg = dlerror(); - if ((pErrorMsg != null) || (app_add_permissions == null)) - { - AppLog("AddPermissions(): dlsym() failed. [%s][%s]", pPackageId, pErrorMsg); - dlclose(pHandle); - return -1; - } - - for (int i = 0; ppPermissions[i] != null; i++) - { - AppLog("Privilege - [%s]", ppPermissions[i]); - } - - ret = app_add_permissions(pPackageId, ppPermissions); - AppLog("[smack] app_add_permissions(%s), result = [%d]", pPackageId, ret); - - dlclose(pHandle); - - return 0; -} -#endif diff --git a/src/Manager/SmackManager.h b/src/Manager/SmackManager.h index d3fd9bf..0734cbc 100755 --- a/src/Manager/SmackManager.h +++ b/src/Manager/SmackManager.h @@ -43,7 +43,6 @@ public: bool AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2); bool EnablePermissions(const Tizen::App::PackageId& packageId); - //bool AddPermissions(const Tizen::App::PackageId& packageId); bool RevokePermissions(const Tizen::App::PackageId& packageId); private: @@ -62,9 +61,6 @@ private: int RegisterAv(const char* pPackageId); - // deprecated - //int AddPermissions(const char* pPackageId, const char** ppPermissions); - private: InstallationContext* __pContext; bool __isSmackEnable; -- 2.7.4