ErrorInvalidPrivilege = 41, ///< invalid privilege.
ErrorPrivilegeLevelViolation,
+ ErrorInstallPrivilegeUsingLegacyFailed = 43,
+ ErrorInstallPrivilegeUnknownFailed = 44,
+ ErrorInstallPrivilegeUnauthorizedFailed = 45,
+
ErrorMenuIconNotFound = 51, ///<
ErrorFatalError = 61, ///< failure in db operation
_D("Call widget install failure finishedCallback");
// send signal of pkgmgr
- GetInstallerStruct().pkgmgrInterface->endJob(m_exceptionCaught);
+ GetInstallerStruct().pkgmgrInterface->endJob(m_exceptionCaught, m_exceptionMessage.c_str());
GetInstallerStruct().finishedCallback(GetInstallerStruct().userParam,
DPL::ToUTF8String(
m_context(context)
{
AddStep(&TaskAceCheck::StartStep);
+ AddStep(&TaskAceCheck::StepPrivilegeCheck);
AddStep(&TaskAceCheck::StepPrepareForAce);
AddStep(&TaskAceCheck::StepAceCheck);
AddStep(&TaskAceCheck::StepProcessAceResponse);
AddStep(&TaskAceCheck::StepCheckAceResponse);
- AddStep(&TaskAceCheck::StepPrivilegeCheck);
AddStep(&TaskAceCheck::EndStep);
}
_D("StepPrivilegeCheck!");
GList* privilege_list = NULL;
- char* error_message = NULL;
+ char* error_privilege_name = NULL;
WrtDB::WidgetDAOReadOnly widgetDao(m_context.widgetConfig.tzAppid);
WidgetFeatureSet featureSet = widgetDao.getFeaturesList();
PRVMGR_PACKAGE_TYPE_WRT,
privilege_list,
cert_svc_visibility,
- &error_message);
+ &error_privilege_name);
if (ret != PRVMGR_ERR_NONE) {
- if (ret == PRVMGR_ERR_INVALID_PRIVILEGE) {
- _E("error meesages : %s", error_message);
- } else {
- _E("error meesages : %s", error_message);
- }
-
+ _E("privilege_manager_verify_privilege_list(PRVMGR_PACKAGE_TYPE_WRT) failed.\n%s", error_privilege_name);
if (privilege_list != NULL) {
g_list_free(privilege_list);
privilege_list = NULL;
}
- if (error_message != NULL) {
- std::string err = error_message;
- free(error_message);
- error_message = NULL;
- ThrowMsg(Exceptions::AceCheckFailed, err.c_str());
+ if (error_privilege_name != NULL) {
+ std::string error_message = error_privilege_name;
+ free(error_privilege_name);
+ error_privilege_name = NULL;
+ if (strstr(error_message.c_str(), "[DEPRECATED_PRIVILEGE]") != NULL) {
+ ThrowMsg(Exceptions::PrivilegeUsingLegacyFailed, error_message.c_str());
+ } else if (strstr(error_message.c_str(), "[NO_EXIST_PRIVILEGE]") != NULL) {
+ ThrowMsg(Exceptions::PrivilegeUnknownkFailed, error_message.c_str());
+ } else if (strstr(error_message.c_str(), "[MISMATCHED_PRIVILEGE_LEVEL]") != NULL) {
+ ThrowMsg(Exceptions::PrivilegeUnauthorizedFailed, error_message.c_str());
+ } else {
+ ThrowMsg(Exceptions::SignatureVerificationFailed, error_message.c_str());
+ }
}
+ } else {
+ _D("privilege_manager_verify_privilege_list(PRVMGR_PACKAGE_TYPE_WRT) is ok.");
}
if (privilege_list != NULL) {
privilege_list = NULL;
}
- if (error_message != NULL) {
- free(error_message);
- error_message = NULL;
+ if (error_privilege_name != NULL) {
+ free(error_privilege_name);
+ error_privilege_name = NULL;
}
}
DECLARE_JOB_EXCEPTION(Base, SmackTransactionFailed, ErrorFatalError)
DECLARE_JOB_EXCEPTION(Base, OutOfStorageFailed, ErrorOutOfStorage)
DECLARE_JOB_EXCEPTION(Base, RecoveryFailed, ErrorFatalError)
+
+DECLARE_JOB_EXCEPTION(Base, PrivilegeUsingLegacyFailed, ErrorInstallPrivilegeUsingLegacyFailed)
+DECLARE_JOB_EXCEPTION(Base, PrivilegeUnknownkFailed, ErrorInstallPrivilegeUnknownFailed)
+DECLARE_JOB_EXCEPTION(Base, PrivilegeUnauthorizedFailed, ErrorInstallPrivilegeUnauthorizedFailed)
} //namespace
} //namespace
} //namespace
fprintf(stderr, "[Err:%d] %s", m_exceptionCaught, m_exceptionMessage.c_str());
// send signal of pkgmgr
- GetInstallerStruct().pkgmgrInterface->endJob(m_exceptionCaught);
+ GetInstallerStruct().pkgmgrInterface->endJob(m_exceptionCaught, m_exceptionMessage.c_str());
_D("Call widget uninstall failure finishedCallback");
GetInstallerStruct().finishedCallback(GetInstallerStruct().userParam,
#include <pkg-manager/pkgmgr_signal.h>
#include <installer_log.h>
+#define BUF_SIZE 4096
+
namespace {
// package type sent in every signal
const char PKGMGR_WEBAPP_TYPE[] = "wgt";
return true;
}
-bool PkgmgrSignal::endJob(Jobs::Exceptions::Type ecode)
+bool PkgmgrSignal::endJob(Jobs::Exceptions::Type type, const char* message)
{
- if(ecode == Jobs::Exceptions::Type::Success)
+ if(type == Jobs::Exceptions::Type::Success)
{
return sendSignal(PKGMGR_END_KEY, PKGMGR_END_SUCCESS);
}
else
{
- sendSignal(PKGMGR_ERROR, DPL::lexical_cast<std::string>(ecode));
+ std::string ecode = DPL::lexical_cast<std::string>(type);
+ if (message != NULL) {
+ char buf[BUF_SIZE] = {'\0'};
+
+ snprintf(buf, BUF_SIZE - 1, "%s:%s", ecode.c_str(), message);
+ sendSignal(PKGMGR_ERROR, buf);
+ }
return sendSignal(PKGMGR_END_KEY, PKGMGR_END_FAILURE);
}
}
std::string getCallerId() const;
bool startJob(Jobs::InstallationType type);
- bool endJob(Jobs::Exceptions::Type ecode);
+ bool endJob(Jobs::Exceptions::Type ecode, const char* message);
bool sendProgress(int percent);
bool sendIconPath(const std::string & iconpath);
void setRecoveryFile();
return false;
}
- bool endJob(Jobs::Exceptions::Type ecode DPL_UNUSED)
+ bool endJob(Jobs::Exceptions::Type ecode DPL_UNUSED, const char* message DPL_UNUSED)
{
return false;
}
virtual std::string getCallerId() const = 0;
virtual bool startJob(Jobs::InstallationType type) = 0;
- virtual bool endJob(Jobs::Exceptions::Type ecode) = 0;
+ virtual bool endJob(Jobs::Exceptions::Type ecode, const char* message = NULL) = 0;
virtual bool sendProgress(int percent) = 0;
virtual bool sendIconPath(const std::string & iconpath) = 0;
virtual ~IPkgmgrSignal(){}
errorStatus = WRT_INSTALLER_ERROR_INSTALL_OSP_SERVCIE;
break;
+ case Jobs::Exceptions::ErrorInstallPrivilegeUsingLegacyFailed:
+ errorStatus = WGT_INSTALLER_ERR_PRIVILEGE_USING_LEGACY_FAILED;
+ break;
+
+ case Jobs::Exceptions::ErrorInstallPrivilegeUnknownFailed:
+ errorStatus = WGT_INSTALLER_ERR_PRIVILEGE_UNKNOWN_FAILED;
+ break;
+
+ case Jobs::Exceptions::ErrorInstallPrivilegeUnauthorizedFailed:
+ errorStatus = WGT_INSTALLER_ERR_PRIVILEGE_UNAUTHORIZED_FAILED;
+ break;
+
default:
errorStatus = WRT_INSTALLER_ERROR_UNKNOWN;
break;
tizenId.c_str(), printMsg.c_str());
break;
+ case WGT_INSTALLER_ERR_PRIVILEGE_USING_LEGACY_FAILED:
+ fprintf(stderr, "## wrt-installer : %s %s has failed - "
+ "privilege using legacy failed\n",
+ tizenId.c_str(), printMsg.c_str());
+ break;
+
+ case WGT_INSTALLER_ERR_PRIVILEGE_UNKNOWN_FAILED:
+ fprintf(stderr, "## wrt-installer : %s %s has failed - "
+ "privilege unknown failed\n",
+ tizenId.c_str(), printMsg.c_str());
+ break;
+
+ case WGT_INSTALLER_ERR_PRIVILEGE_UNAUTHORIZED_FAILED:
+ fprintf(stderr, "## wrt-installer : %s %s has failed - "
+ "privilege unauthorized failed\n",
+ tizenId.c_str(), printMsg.c_str());
+ break;
+
case WRT_INSTALLER_ERROR_MENU_ICON_NOT_FOUND:
fprintf(stderr, "## wrt-installer : %s %s has failed - "
"menu icon could not find\n",
WRT_INSTALLER_ERROR_INVALID_PRIVILEGE = 41, ///< invalid privilege.
WRT_INSTALLER_ERROR_PRIVILEGE_LEVEL_VIOLATION,
+ WGT_INSTALLER_ERR_PRIVILEGE_USING_LEGACY_FAILED = 43,
+ WGT_INSTALLER_ERR_PRIVILEGE_UNKNOWN_FAILED = 44,
+ WGT_INSTALLER_ERR_PRIVILEGE_UNAUTHORIZED_FAILED = 45,
+
WRT_INSTALLER_ERROR_MENU_ICON_NOT_FOUND = 51, ///<
WRT_INSTALLER_ERROR_FATAL_ERROR = 61, ///< failure in db operation or file opertion..
<smack request="deviced::display" type="rwx"/>
<smack request="system::homedir" type="rwxat"/>
<smack request="aul::terminate" type="x"/>
+ <smack request="system::ext_storage" type="rwxat"/>
</request>
<provide>
<label name="wrt-installer::installer" />