Tizen 2.4.0 rev3 SDK Public Release
authorjk7744.park <jk7744.park@samsung.com>
Sun, 21 Feb 2016 06:12:41 +0000 (15:12 +0900)
committerjk7744.park <jk7744.park@samsung.com>
Sun, 21 Feb 2016 06:12:41 +0000 (15:12 +0900)
13 files changed:
src/jobs/job_exception_error.h
src/jobs/widget_install/job_widget_install.cpp
src/jobs/widget_install/task_ace_check.cpp
src/jobs/widget_install/widget_install_errors.h
src/jobs/widget_uninstall/job_widget_uninstall.cpp
src/pkg-manager/pkgmgr_signal.cpp
src/pkg-manager/pkgmgr_signal.h
src/pkg-manager/pkgmgr_signal_dummy.h
src/pkg-manager/pkgmgr_signal_interface.h
src/wrt-installer/installer_callbacks_translate.cpp
src/wrt-installer/wrt-installer.cpp
src/wrt-installer/wrt_type.h
wrt-installer.manifest

index 1caba99..56e529f 100644 (file)
@@ -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
index ae86128..de12fb6 100644 (file)
@@ -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(
index cc420c9..4a451ee 100755 (executable)
@@ -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;
     }
 }
 
index 59f44d5..5df68e6 100755 (executable)
@@ -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
index 9a5ac69..e2218c2 100755 (executable)
@@ -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,
index a5f2383..4e3b660 100644 (file)
@@ -26,6 +26,8 @@
 #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";
@@ -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<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);
     }
 }
index 26ce559..f8da53c 100644 (file)
@@ -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();
index 42b0aa4..9cea45d 100644 (file)
@@ -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;
     }
index 1e38a17..50bd706 100644 (file)
@@ -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(){}
index ca52dd6..604cb0b 100644 (file)
@@ -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;
index b76e21e..7870c99 100644 (file)
@@ -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",
index 3a5ed67..ed05f3e 100644 (file)
@@ -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..
index 94f9be1..48cbbb0 100644 (file)
@@ -6,6 +6,7 @@
         <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" />