#include <FBaseInternalTypes.h>
#include <FSec_AccessControlTypes.h>
#include <FSec_DeviceKeyGenerator.h>
-#include <FIoFile.h>
+#include <FIoDatabase.h>
+#include <FIoDbEnumerator.h>
#include "InstallerDefs.h"
#include "PrivilegeHandler.h"
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<String*>(pEnum->GetCurrent());
}
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.");
}
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.");