- String* tempString = static_cast< String* >(pEnum->GetCurrent());
- __privilegeList.Add(new String(*tempString));
+ int ret = PRVMGR_ERR_NONE;
+ char* pPrivilegeLevel = null;
+ std::unique_ptr<char[]> pPrivilegeId(null);
+ String* pTempString = static_cast< String* >(pEnum->GetCurrent());
+
+ pPrivilegeId.reset(_StringConverter::CopyToCharArrayN(*pTempString));
+ SysTryReturnResult(NID_SEC, pPrivilegeId != null, E_SYSTEM, "An unexpected system error occurred.");
+
+ ret = privilege_info_get_external_privilege_level(static_cast<char*>(pPrivilegeId.get()), &pPrivilegeLevel);
+ SysTryReturnResult(NID_SEC, ret == PRVMGR_ERR_NONE, E_SYSTEM, "An unexpected system error occurred.");
+
+ __privilegeList.Add((new String(*pTempString)), (new String(pPrivilegeLevel)));
+ if (pPrivilegeLevel != null)
+ {
+ free(pPrivilegeLevel);
+ }