From 89a52f4196163de87d7c25f2f2bdc48b68bb0e51 Mon Sep 17 00:00:00 2001 From: "jk7744.park" Date: Sun, 21 Feb 2016 15:12:41 +0900 Subject: [PATCH] Tizen 2.4.0 rev3 SDK Public Release --- src/jobs/job_exception_error.h | 4 +++ src/jobs/widget_install/job_widget_install.cpp | 2 +- src/jobs/widget_install/task_ace_check.cpp | 39 ++++++++++++---------- src/jobs/widget_install/widget_install_errors.h | 4 +++ src/jobs/widget_uninstall/job_widget_uninstall.cpp | 2 +- src/pkg-manager/pkgmgr_signal.cpp | 14 ++++++-- src/pkg-manager/pkgmgr_signal.h | 2 +- src/pkg-manager/pkgmgr_signal_dummy.h | 2 +- src/pkg-manager/pkgmgr_signal_interface.h | 2 +- .../installer_callbacks_translate.cpp | 12 +++++++ src/wrt-installer/wrt-installer.cpp | 18 ++++++++++ src/wrt-installer/wrt_type.h | 4 +++ wrt-installer.manifest | 1 + 13 files changed, 81 insertions(+), 25 deletions(-) diff --git a/src/jobs/job_exception_error.h b/src/jobs/job_exception_error.h index 1caba99..56e529f 100644 --- a/src/jobs/job_exception_error.h +++ b/src/jobs/job_exception_error.h @@ -61,6 +61,10 @@ enum Type ErrorInvalidPrivilege = 41, ///< invalid privilege. ErrorPrivilegeLevelViolation, + ErrorInstallPrivilegeUsingLegacyFailed = 43, + ErrorInstallPrivilegeUnknownFailed = 44, + ErrorInstallPrivilegeUnauthorizedFailed = 45, + ErrorMenuIconNotFound = 51, ///< ErrorFatalError = 61, ///< failure in db operation diff --git a/src/jobs/widget_install/job_widget_install.cpp b/src/jobs/widget_install/job_widget_install.cpp index ae86128..de12fb6 100644 --- a/src/jobs/widget_install/job_widget_install.cpp +++ b/src/jobs/widget_install/job_widget_install.cpp @@ -323,7 +323,7 @@ void JobWidgetInstall::SendFinishedFailure() _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( diff --git a/src/jobs/widget_install/task_ace_check.cpp b/src/jobs/widget_install/task_ace_check.cpp index cc420c9..4a451ee 100755 --- a/src/jobs/widget_install/task_ace_check.cpp +++ b/src/jobs/widget_install/task_ace_check.cpp @@ -45,11 +45,11 @@ TaskAceCheck::TaskAceCheck(InstallerContext& context) : 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); } @@ -236,7 +236,7 @@ void TaskAceCheck::StepPrivilegeCheck() _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(); @@ -271,26 +271,31 @@ void TaskAceCheck::StepPrivilegeCheck() 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) { @@ -298,9 +303,9 @@ void TaskAceCheck::StepPrivilegeCheck() 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; } } diff --git a/src/jobs/widget_install/widget_install_errors.h b/src/jobs/widget_install/widget_install_errors.h index 59f44d5..5df68e6 100755 --- a/src/jobs/widget_install/widget_install_errors.h +++ b/src/jobs/widget_install/widget_install_errors.h @@ -95,6 +95,10 @@ DECLARE_JOB_EXCEPTION(Base, NotSupportRDSUpdate, ErrorNotSupportRDSUpdate) 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 diff --git a/src/jobs/widget_uninstall/job_widget_uninstall.cpp b/src/jobs/widget_uninstall/job_widget_uninstall.cpp index 9a5ac69..e2218c2 100755 --- a/src/jobs/widget_uninstall/job_widget_uninstall.cpp +++ b/src/jobs/widget_uninstall/job_widget_uninstall.cpp @@ -279,7 +279,7 @@ void JobWidgetUninstall::SendFinishedFailure() 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, diff --git a/src/pkg-manager/pkgmgr_signal.cpp b/src/pkg-manager/pkgmgr_signal.cpp index a5f2383..4e3b660 100644 --- a/src/pkg-manager/pkgmgr_signal.cpp +++ b/src/pkg-manager/pkgmgr_signal.cpp @@ -26,6 +26,8 @@ #include #include +#define BUF_SIZE 4096 + namespace { // package type sent in every signal const char PKGMGR_WEBAPP_TYPE[] = "wgt"; @@ -209,15 +211,21 @@ bool PkgmgrSignal::startJob(Jobs::InstallationType type) 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(ecode)); + std::string ecode = DPL::lexical_cast(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); } } diff --git a/src/pkg-manager/pkgmgr_signal.h b/src/pkg-manager/pkgmgr_signal.h index 26ce559..f8da53c 100644 --- a/src/pkg-manager/pkgmgr_signal.h +++ b/src/pkg-manager/pkgmgr_signal.h @@ -48,7 +48,7 @@ public: 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(); diff --git a/src/pkg-manager/pkgmgr_signal_dummy.h b/src/pkg-manager/pkgmgr_signal_dummy.h index 42b0aa4..9cea45d 100644 --- a/src/pkg-manager/pkgmgr_signal_dummy.h +++ b/src/pkg-manager/pkgmgr_signal_dummy.h @@ -56,7 +56,7 @@ class PkgmgrSignalDummy : public IPkgmgrSignal 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; } diff --git a/src/pkg-manager/pkgmgr_signal_interface.h b/src/pkg-manager/pkgmgr_signal_interface.h index 1e38a17..50bd706 100644 --- a/src/pkg-manager/pkgmgr_signal_interface.h +++ b/src/pkg-manager/pkgmgr_signal_interface.h @@ -36,7 +36,7 @@ class IPkgmgrSignal 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(){} diff --git a/src/wrt-installer/installer_callbacks_translate.cpp b/src/wrt-installer/installer_callbacks_translate.cpp index ca52dd6..604cb0b 100644 --- a/src/wrt-installer/installer_callbacks_translate.cpp +++ b/src/wrt-installer/installer_callbacks_translate.cpp @@ -155,6 +155,18 @@ void installFinishedCallback(void *userParam, 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; diff --git a/src/wrt-installer/wrt-installer.cpp b/src/wrt-installer/wrt-installer.cpp index b76e21e..7870c99 100644 --- a/src/wrt-installer/wrt-installer.cpp +++ b/src/wrt-installer/wrt-installer.cpp @@ -1208,6 +1208,24 @@ void WrtInstaller::showErrorMsg(WrtErrStatus status, std::string tizenId, 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", diff --git a/src/wrt-installer/wrt_type.h b/src/wrt-installer/wrt_type.h index 3a5ed67..ed05f3e 100644 --- a/src/wrt-installer/wrt_type.h +++ b/src/wrt-installer/wrt_type.h @@ -62,6 +62,10 @@ typedef enum 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.. diff --git a/wrt-installer.manifest b/wrt-installer.manifest index 94f9be1..48cbbb0 100644 --- a/wrt-installer.manifest +++ b/wrt-installer.manifest @@ -6,6 +6,7 @@ +