From 3b2ce51de59c124007b758274cc907360f54a24c Mon Sep 17 00:00:00 2001 From: "hb.min" Date: Sun, 14 Apr 2013 18:19:45 +0900 Subject: [PATCH] Add privilege-checker for Add-On SDK Change-Id: I9ac930443682639ba180d8c42ec49dbc466b869f Signed-off-by: hb.min --- inc/InstallerDefs.h | 2 +- src/XmlHandler/PrivilegeHandler.cpp | 55 +++++++++++++++++++++++++++---------- src/XmlHandler/PrivilegeHandler.h | 2 +- 3 files changed, 42 insertions(+), 17 deletions(-) diff --git a/inc/InstallerDefs.h b/inc/InstallerDefs.h index c2f4ded..05fb1e5 100755 --- a/inc/InstallerDefs.h +++ b/inc/InstallerDefs.h @@ -23,7 +23,7 @@ #include "InstallerUtil.h" -#define OSP_INSTALLER_VERSION "version=[20130413.1]" +#define OSP_INSTALLER_VERSION "version=[20130414.1]" #define DIR_BIN L"/bin" #define DIR_INFO L"/info" diff --git a/src/XmlHandler/PrivilegeHandler.cpp b/src/XmlHandler/PrivilegeHandler.cpp index 2f4d5a5..b074d56 100755 --- a/src/XmlHandler/PrivilegeHandler.cpp +++ b/src/XmlHandler/PrivilegeHandler.cpp @@ -29,7 +29,8 @@ #include #include #include -#include +#include +#include #include "InstallerDefs.h" #include "PrivilegeHandler.h" @@ -49,23 +50,33 @@ result PrivilegeHandler::PickExternalPrivilege(const IList& fullPrivilegeList, IList& normalPrivilegeList, IList& externalPrivilegeList) { result r = E_SUCCESS; - File file; String externalPrivilege; ArrayList privilegeList; + Database privilegeDb; + DbEnumerator* pDbEnum; - r = file.Construct(EXTERNAL_PRIVILEGE_FILE_NAME, "r"); + r = privilegeDb.Construct(EXTERNAL_PRIVILEGE_DB_NAME, "r"); TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); - privilegeList.Construct(); - while (file.Read(externalPrivilege) == E_SUCCESS) + pDbEnum = privilegeDb.QueryN(L"SELECT PRIVILEGE_ID FROM PrivilegeInfo"); + TryReturnResultTag(OSP_INSTALLER, pDbEnum != null, E_DATABASE, E_DATABASE, "[E_DATABASE] Privilege database error."); + + AppLog("------------------------------------------"); + AppLog("External Privilege"); + AppLog("------------------------------------------"); + + while (pDbEnum->MoveNext() == E_SUCCESS) { - externalPrivilege.Remove(externalPrivilege.GetLength()-1, 1); + r = pDbEnum->GetStringAt(0, externalPrivilege); + TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, E_DATABASE, E_DATABASE, "[E_DATABASE] Privilege database error."); + + AppLog("%ls", externalPrivilege.GetPointer()); privilegeList.Add(new String(externalPrivilege)); } + delete pDbEnum; IEnumerator* pEnum = fullPrivilegeList.GetEnumeratorN(); - while(pEnum->MoveNext() == E_SUCCESS) { String* tempString = static_cast(pEnum->GetCurrent()); @@ -104,10 +115,17 @@ PrivilegeHandler::GenerateCipherPrivilege(const AppId& appId, const IList& privi } r = PickExternalPrivilege(privilegeList, normalPrivilegeList, stringPrivilegeList); - TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); - - pBitwisePrivilege = PackPrivilegeN(normalPrivilegeList); - TryReturnResultTag(OSP_INSTALLER, pBitwisePrivilege != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + if (r == E_SUCCESS) + { + pBitwisePrivilege = PackPrivilegeN(normalPrivilegeList); + TryReturnResultTag(OSP_INSTALLER, pBitwisePrivilege != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } + else + { + AppLog("Working with normal PrivilegeDb."); + pBitwisePrivilege = PackPrivilegeN(privilegeList); + TryReturnResultTag(OSP_INSTALLER, pBitwisePrivilege != null, GetLastResult(), GetLastResult(), "[%s] Propagating.", GetErrorMessage(GetLastResult())); + } r = GetEncryptedBitwise(pBitwisePrivilege, encryptedPrivileges); TryCatchTag(OSP_INSTALLER, r == E_SUCCESS, r = E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred."); @@ -147,10 +165,17 @@ PrivilegeHandler::GenerateCipherPrivilege(const AppId& appId, const IList& privi } r = PickExternalPrivilege(privilegeList, normalPrivilegeList, stringPrivilegeList); - TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); - - r = PackPrivilegeN(normalPrivilegeList, visibilityLevel, &pBitwisePrivilege); - TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + if (r == E_SUCCESS) + { + r = PackPrivilegeN(normalPrivilegeList, visibilityLevel, &pBitwisePrivilege); + TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + } + else + { + AppLog("Working with normal PrivilegeDb."); + r = PackPrivilegeN(privilegeList, visibilityLevel, &pBitwisePrivilege); + TryReturnResultTag(OSP_INSTALLER, r == E_SUCCESS, r, r, "[%s] Propagating.", GetErrorMessage(r)); + } r = GetEncryptedBitwise(pBitwisePrivilege, encryptedPrivileges); TryCatchTag(OSP_INSTALLER, r == E_SUCCESS, r = E_SYSTEM, "[E_SYSTEM] An unexpected system error occurred."); diff --git a/src/XmlHandler/PrivilegeHandler.h b/src/XmlHandler/PrivilegeHandler.h index fd68c18..98868be 100644 --- a/src/XmlHandler/PrivilegeHandler.h +++ b/src/XmlHandler/PrivilegeHandler.h @@ -36,7 +36,7 @@ namespace Tizen { namespace Base class String; }} -static const wchar_t EXTERNAL_PRIVILEGE_FILE_NAME[] = L"/usr/share/osp/.external-privilege.ini"; +static const wchar_t EXTERNAL_PRIVILEGE_DB_NAME[] = L"/opt/dbspace/.privilegelist.db"; /** * @class PrivilegeHandler -- 2.7.4