#include <FIo.h>
#include <FBase_StringConverter.h>
#include <FSec_AccessControlTypes.h>
+#include <FBaseUtilStringTokenizer.h>
#include "FSec_PrivilegeInfoImpl.h"
using namespace Tizen::Base::Runtime;
using namespace Tizen::Base;
+using namespace Tizen::Base::Utility;
using namespace Tizen::Base::Collection;
using namespace Tizen::Io;
}
else
{
- SysLogException(NID_SEC, E_DATA_NOT_FOUND, "[E_DATA_NOT_FOUND] Privilege information is not found. [%ls]", privilegeString.GetPointer());
+ SysLog(NID_SEC, "Privilege information is not found. [%ls]", privilegeString.GetPointer());
+
+ String displayName;
+ StringTokenizer strTok(__privilegeId, L"/");
+ while(strTok.HasMoreTokens() == true)
+ {
+ strTok.GetNextToken(displayName);
+ }
+
+ name = displayName;
}
CATCH:
}
else
{
- SysLogException(NID_SEC, E_DATA_NOT_FOUND, "[E_DATA_NOT_FOUND] Privilege information is not found. [%ls]", privilegeString.GetPointer());
+ description.Append("Undefined");
}
CATCH:
return pEnum;
}
+bool
+_PrivilegeInfoImpl::CheckExternalPrivilege(const Tizen::Base::String& privilegeId)
+{
+ result r = E_SUCCESS;
+ bool flag = false;
+
+ String query;
+ DbStatement* pStmt = null;
+ DbEnumerator* pEnum = null;
+
+ Database* pDb = new Database;
+ SysTryReturn(NID_SEC, pDb != null, false, E_OUT_OF_MEMORY, "[E_OUT_OF_MEMORY] The memory is insufficient.");
+
+ r = pDb->Construct(EXTERNAL_PRIVILEGE_DATABASE_FILE_NAME, false);
+ SysTryCatch(NID_SEC, r == E_SUCCESS, flag = false, E_DATABASE, "External PrivilegeDb is not exist.");
+
+ query.Format(1024, L"SELECT PRIVILEGE_ID FROM PrivilegeInfo WHERE PRIVILEGE_ID = '%ls'", privilegeId.GetPointer());
+
+ pStmt = CreateStatementN(*pDb, query);
+ SysTryCatch(NID_SEC, pStmt != null, flag = false, E_DATABASE, "[E_DATABASE] An error occurs while creating a database statement.");
+
+ pEnum = ExecuteStatementN(*pDb, pStmt);
+ if (pEnum != null)
+ {
+ if (pEnum->MoveNext() == E_SUCCESS)
+ {
+ flag = true;
+ }
+
+ delete pEnum;
+ pEnum = null;
+ }
+ else
+ {
+ flag = false;
+ SysLog(NID_SEC, "[%ls] is not exist in PrivilegeDb.", privilegeId.GetPointer());
+ }
+
+CATCH:
+
+ delete pDb;
+ delete pStmt;
+
+ return flag;
+}
+
result
_PrivilegeInfoImpl::Construct(const Tizen::Base::String& privilegeId)
{
}
}
+ if (validStringFlag != true)
+ {
+ if (CheckExternalPrivilege(privilegeId))
+ {
+ validStringFlag = true;
+ }
+ }
+
SysTryReturnResult(NID_SEC, validStringFlag == true, E_INVALID_ARG, "Invalid privilege ID [%ls]", privilegeId.GetPointer());
r = Construct();