#include "InstallerUtil.h"
-#define OSP_INSTALLER_VERSION "version=[20130407.2]"
+#define OSP_INSTALLER_VERSION "version=[20130408.1]"
#define DIR_BIN L"/bin"
#define DIR_INFO L"/info"
#include "DatabaseManager.h"
#include "InstallerUtil.h"
#include "SignatureManager.h"
+#include "SmackManager.h"
using namespace Tizen::Base;
using namespace Tizen::Base::Collection;
InstallationContext* pContext = GetContext();
TryReturn(pContext, INSTALLER_ERROR_INTERNAL_STATE, "pContext is null");
+ SmackManager smackManager;
+ smackManager.Construct(pContext);
+
InstallerOperation operation = pContext->GetInstallerOperation();
ConfigurationManager configurationManager;
SignatureManager sigManager;
if (operation == INSTALLER_OPERATION_INSTALL)
{
+ res = smackManager.Install(pContext->__packageId);
+ TryReturn(res, INSTALLER_ERROR_INTERNAL_STATE, "smackManager.Install(%ls) failed.", pContext->__packageId.GetPointer());
+
res = configurationManager.CreateFile(pContext);
TryReturn(res, INSTALLER_ERROR_INTERNAL_STATE, "CreateFile() failed.");
configurationManager.RemoveFile(pContext);
sigManager.UnregisterCertInfo();
configurationManager.PostUninstall(pContext);
+
+ res = smackManager.Uninstall(pContext->__packageId);
+ AppLog("smackManager.Uninstall(%ls) failed. [%d]", pContext->__packageId.GetPointer(), res);
}
AppLog("Installer::OnEnd() - END");
SmackManager smackManager;
smackManager.Construct(pContext);
- smackManager.AddPermissions(packageId);
+ smackManager.EnablePermissions(packageId);
}
if (pHandle)
}
bool
+SmackManager::EnablePermissions(const PackageId& packageId)
+{
+ if (__isSmackEnable == false)
+ {
+ return true;
+ }
+
+ TryReturn(__pContext, false, "__pContext is null");
+
+ int res = 0;
+
+ std::unique_ptr<char[]> 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 = EnablePermissions(pPackageId.get(), 1, pList, true);
+
+ if (__pContext->__isPreloaded == true)
+ {
+ 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<char[]> 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());
+ }
+ }
+
+ for (int i = 0; pList[i] != null; i++)
+ {
+ AppLog("delete Privilege - [%s]", pList[i]);
+ delete[] pList[i];
+ }
+ delete[] pList;
+
+ return true;
+}
+
+#if 0
+bool
SmackManager::AddPermissions(const PackageId& packageId)
{
if (__isSmackEnable == false)
return true;
}
+#endif
bool
SmackManager::RevokePermissions(const PackageId& packageId)
dlclose(pHandle);
- return 0;
+ return ret;
}
int
dlclose(pHandle);
- return 0;
+ return ret;
}
int
return 0;
}
+#if 0
int
SmackManager::AddPermissions(const char* pPackageId, const char** ppPermissions)
{
return 0;
}
+#endif
bool AddSharedDirReaders(const Tizen::Base::String& label);
bool AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2);
- bool AddPermissions(const Tizen::App::PackageId& packageId);
+ bool EnablePermissions(const Tizen::App::PackageId& packageId);
+ //bool AddPermissions(const Tizen::App::PackageId& packageId);
bool RevokePermissions(const Tizen::App::PackageId& packageId);
private:
int RevokePermissions(const char* pPackageId);
// deprecated
- int AddPermissions(const char* pPackageId, const char** ppPermissions);
+ //int AddPermissions(const char* pPackageId, const char** ppPermissions);
private:
InstallationContext* __pContext;