#include "InstallerUtil.h"
-#define OSP_INSTALLER_VERSION "version=[20130610.2]"
+#define OSP_INSTALLER_VERSION "version=[20130610.3]"
#define DIR_BIN L"/bin"
#define DIR_INFO L"/info"
};
-enum SmackDirType
-{
- SMACK_DIR_TYPE_PRIVATE,
- SMACK_DIR_TYPE_GROUP_RW,
- SMACK_DIR_TYPE_PUBLIC_RO,
- SMACK_DIR_TYPE_SETTINGS_RW,
-
-};
-
#endif // _INSTALLER_DEFS_H_
,__isVerificationMode(false)
,__isUpdated(false)
,__isAppSetting(false)
+,__isAntiVirus(false)
,__isCsc(false)
,__isUninstallable(false)
,__isVirtualRoot(false)
bool __isVerificationMode;
bool __isUpdated;
bool __isAppSetting;
+ bool __isAntiVirus;
bool __isCsc;
bool __isUninstallable;
bool __isVirtualRoot;
// appRoot/bin
destPath = appRootPath + DIR_BIN;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/info
destPath = appRootPath + DIR_INFO;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/res
destPath = appRootPath + DIR_RES;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/lib
destPath = appRootPath + DIR_LIB;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/shared
destPath = appRootPath + DIR_SHARED;
TryReturn(!IsFailed(r), INSTALLER_ERROR_INTERNAL_STATE, "Directory::Create() failed");
}
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/shared/res
destPath = appRootPath + DIR_SHARED_RES;
InstallerUtil::CreateSymlink(iconPath, destPath);
}
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/shared/data
destPath = appRootPath + DIR_SHARED_DATA;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PUBLIC_RO);
+ smackManager.AddLabelSharedDir(packageId, destPath);
// appRoot/shared/trusted
destPath = appRootPath + DIR_SHARED_TRUSTED;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_GROUP_RW);
+ smackManager.AddLabelSharedDir(packageId, destPath);
// appRoot/contents
destPath = appRootPath + DIR_CONTENTS;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/setting
destPath = appRootPath + DIR_SETTING;
String appVersion = pContext->__version;
String srcPath;
String settingXmlPath;
+ String label = "*";
+ //String label = packageId;
+ //label.Append("_setting");
+
srcPath = destPath + L"/setting." + appVersion + L".xml";
settingXmlPath = destPath + L"/setting.xml";
InstallerUtil::CreateSymlink(srcPath, settingXmlPath);
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_WRITE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_SETTINGS_RW);
+ smackManager.AddLabelDir(label, destPath);
}
// appRoot/data
TryReturn(!IsFailed(r), false, "Directory::Create() failed");
}
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
String apiVersion = pContext->__apiVersion;
// appRoot/bin
destPath = appRootPath + DIR_BIN;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/info
destPath = appRootPath + DIR_INFO;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/res
destPath = appRootPath + DIR_RES;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/lib
destPath = appRootPath + DIR_LIB;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_EXECUTE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/shared
destPath = appRootPath + DIR_SHARED;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/shared/res
destPath = appRootPath + DIR_SHARED_RES;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, false);
+ smackManager.AddLabelSharedDir(packageId, destPath);
// appRoot/shared/data
destPath = appRootPath + DIR_SHARED_DATA;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PUBLIC_RO);
+ smackManager.AddLabelSharedDir(packageId, destPath);
// appRoot/shared/trusted
destPath = appRootPath + DIR_SHARED_TRUSTED;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_GROUP_RW);
+ smackManager.AddLabelSharedDir(packageId, destPath);
// appRoot/setting
destPath = appRootPath + DIR_SETTING;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE | PERM_WRITE, false);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_SETTINGS_RW);
+ smackManager.AddLabelDir(packageId, destPath);
// appRoot/data
destPath = appRootPath + DIR_DATA;
InstallerUtil::ChangeDirectoryPermission(destPath, PERM_BASE, true);
- smackManager.SetupPath(packageId, destPath, SMACK_DIR_TYPE_PRIVATE);
+ smackManager.AddLabelDir(packageId, destPath);
return true;
}
TryReturn(pPackageId, false, "pPackageId is null.");
res = Install(pPackageId.get());
- TryReturn(res == 0, false, "Install() failed.");
+
+ if (__pContext->__isAntiVirus == true)
+ {
+ RegisterAv(pPackageId.get());
+ }
return true;
}
return true;
}
-#if 0
bool
SmackManager::AddLabelSharedDir(const PackageId& packageId, const String& dirPath)
{
return true;
}
-#endif
-#if 0
bool
SmackManager::AddSharedDirReaders(const String& label)
{
return res;
}
-#endif
bool
SmackManager::AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2)
}
bool
-SmackManager::SetupPath(const PackageId& packageId, const String& dirPath, SmackDirType type)
-{
- int res = 0;
- String realPath;
-
- std::unique_ptr<char[]> pPackageId(_StringConverter::CopyToCharArrayN(packageId));
- TryReturn(pPackageId, false, "pPackageId is null.");
-
- std::unique_ptr<char[]> pPath(_StringConverter::CopyToCharArrayN(dirPath));
- TryReturn(pPath, false, "pPath is null.");
-
- if (InstallerUtil::IsSymlink(dirPath) == true)
- {
- AddLabelDir("_", pPath.get());
- InstallerUtil::GetRealPath(dirPath, realPath);
- }
- else
- {
- realPath = dirPath;
- }
-
- std::unique_ptr<char[]> pRealPath(_StringConverter::CopyToCharArrayN(realPath));
- TryReturn(pRealPath, false, "pRealPath is null.");
-
- if (type == SMACK_DIR_TYPE_GROUP_RW)
- {
- String groupId;
-
- if (__pContext->__isVerificationMode == true)
- {
- Sha1Hash hash;
- String base64Value;
- result r = E_SUCCESS;
-
- IListT<String *>* pAuthorCertList = __pContext->__pAuthorCertList;
- TryReturn(pAuthorCertList, false, "pAuthorCertList is null.");
-
- String* pEntity = null;
- r = pAuthorCertList->GetAt(0, pEntity);
- TryReturn(!IsFailed(r), false, "pAuthorCertList->GetAt() is failed.");
- TryReturn(pEntity, false, "pEntity is null.");
-
- std::unique_ptr<ByteBuffer> pEncodedData(StringUtil::DecodeBase64StringN(*pEntity));
- TryReturn(pEncodedData, false, "pEncodedData is null.");
-
- std::unique_ptr<ByteBuffer> pHashValue(hash.GetHashN(*pEncodedData.get()));
- TryReturn(pHashValue, false, "pHashValue is null.");
-
- r = StringUtil::EncodeToBase64String(*pHashValue, base64Value);
- TryReturn(!IsFailed(r), false, "EncodeToBase64String() is failed.");
-
- // in smack, '/' is not allowed for label.
- r = base64Value.Replace(L"/", L"#");
- TryReturn(!IsFailed(r), false, "base64Value.Replace() is failed.");
-
- std::unique_ptr<char[]> pHashEncodedValue(_StringConverter::CopyToCharArrayN(base64Value));
- TryReturn(pHashEncodedValue, false, "pHashEncodedValue is null.");
-
- groupId = pHashEncodedValue.get();
- AppLog("pHashEncodedValue = [%s]", pHashEncodedValue.get());
- }
- else
- {
- groupId = __pContext->__packageId;
- }
-
- std::unique_ptr<char[]> pGroupId(_StringConverter::CopyToCharArrayN(groupId));
- TryReturn(pGroupId, false, "pGroupId is null.");
-
- res = SetupPath(pPackageId.get(), pRealPath.get(), (int) type, pGroupId.get());
- }
- else
- {
- res = SetupPath(pPackageId.get(), pRealPath.get(), (int) type);
- }
-
- return true;
-}
-
-bool
SmackManager::IsSmackEnable()
{
result r;
return 0;
}
-#if 0
int
SmackManager::AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath)
{
return 0;
}
-#endif
-#if 0
int
SmackManager::AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList)
{
return 0;
}
-#endif
int
SmackManager::AddFriend(const char* pPackageId1, const char* pPackageId2)
}
int
-SmackManager::SetupPath(const char* pPackageId, const char* pDirPath, int appPathType, const char* pGroupId)
+SmackManager::RegisterAv(const char* pPackageId)
{
int ret = 0;
void* pHandle = null;
char* pErrorMsg = null;
- int (*app_setup_path)(const char*, const char*, int, ...) = null;
+ int (*app_register_av)(const char*) = null;
pHandle = dlopen("libprivilege-control.so.0", RTLD_LAZY | RTLD_GLOBAL);
if (!pHandle)
{
- AppLog("dlopen() failed. [%s]", dlerror());
+ AppLog("RegisterAv(): dlopen() failed. [%s]", dlerror());
return -1;
}
- app_setup_path = reinterpret_cast <int (*)(const char*, const char*, int, ...)>(dlsym(pHandle, "app_setup_path"));
+ app_register_av = reinterpret_cast <int (*)(const char*)>(dlsym(pHandle, "app_register_av"));
pErrorMsg = dlerror();
- if ((pErrorMsg != null) || (app_setup_path == null))
+ if ((pErrorMsg != null) || (app_register_av == null))
{
- AppLog("dlsym() failed. [%s]", pErrorMsg);
+ AppLog("RegisterAv(): dlsym() failed. [%s]", pErrorMsg);
dlclose(pHandle);
return -1;
}
- if (pGroupId == null)
- {
- AppLog("[smack] app_setup_path(%s, %s, %d)", pPackageId, pDirPath, appPathType);
- ret = app_setup_path(pPackageId, pDirPath, appPathType);
- AppLog("[smack] app_setup_path(), result = [%d]", ret);
- }
- else
- {
- AppLog("[smack] app_setup_path(%s, %s, %d, %s)", pPackageId, pDirPath, appPathType, pGroupId);
- ret = app_setup_path(pPackageId, pDirPath, appPathType, pGroupId);
- AppLog("[smack] app_setup_path(), result = [%d]", ret);
- }
+ AppLog("[smack] app_register_av(%s)", pPackageId);
+ ret = app_register_av(pPackageId);
+ AppLog("[smack] app_register_av(%s), result = [%d]", pPackageId, ret);
dlclose(pHandle);
return ret;
+
}
ArrayList*
bool Uninstall(const Tizen::App::PackageId& packageId);
bool AddLabelDir(const Tizen::Base::String& label, const Tizen::Base::String& dirPath, bool rootDirectory = false);
- //bool AddLabelSharedDir(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath);
- //bool AddSharedDirReaders(const Tizen::Base::String& label);
+ bool AddLabelSharedDir(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath);
+ bool AddSharedDirReaders(const Tizen::Base::String& label);
bool AddFriend(const Tizen::App::PackageId& packageId1, const Tizen::App::PackageId& packageId2);
bool EnablePermissions(const Tizen::App::PackageId& packageId);
bool RevokePermissions(const Tizen::App::PackageId& packageId);
- bool SetupPath(const Tizen::App::PackageId& packageId, const Tizen::Base::String& dirPath, SmackDirType type);
-
private:
bool IsSmackEnable();
int Uninstall(const char* pPackageId);
int AddLabelDir(const char* pLabel, const char* pDirPath);
- //int AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath);
- //int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList);
+ int AddLabelSharedDir(const char* pLabel, const char* pSharedLabel, const char* pDirPath);
+ int AddSharedDirReaders(const char* pSharedLabel, const char** ppAppList);
int AddFriend(const char* pPackageId1, const char* pPackageId2);
int EnablePermissions(const char* pPackageId, int appType, const char** ppPermissions, bool persistent);
int RevokePermissions(const char* pPackageId);
- int SetupPath(const char* pPackageId, const char* pDirPath, int appPathType, const char* pGroupId = null);
+ int RegisterAv(const char* pPackageId);
Tizen::Base::Collection::ArrayList* GetPreloadedAppListN() const;
{
__pAppData->__feature = CATEGORY_TYPE_IME;
}
+ else if (strcasecmp(pCharacters, TIZEN_CATEGORY_ANTIVIRUS) == 0)
+ {
+ AppLog("ANTIVIRUS Package is detected.");
+ __pContext->__isAntiVirus = true;
+ }
return true;
}