Catch exception occured from cert-svc-vcore 97/44797/3 accepted/tizen/mobile/20150803.094133 accepted/tizen/tv/20150803.094145 accepted/tizen/wearable/20150803.094204 submit/tizen/20150803.080426
authorKyungwook Tak <k.tak@samsung.com>
Tue, 28 Jul 2015 02:45:16 +0000 (11:45 +0900)
committerPawel Sikorski <p.sikorski@samsung.com>
Mon, 3 Aug 2015 07:13:28 +0000 (00:13 -0700)
Change-Id: I04b9d4121ffd213ec1b978de23cbc1bed4989085
Signed-off-by: Kyungwook Tak <k.tak@samsung.com>
src/common/step/step_check_old_certificate.cc
src/common/step/step_unregister_app.cc
src/common/step/step_unregister_app.h
src/common/step/step_update_app.cc

index c2d714e..79e6592 100644 (file)
@@ -27,9 +27,15 @@ Step::Status StepCheckOldCertificate::process() {
                  << "when the previous version of package has signature";
       return Status::ERROR;
     } else {
-      if (old_author_certificate != cert->getBase64()) {
-        LOG(ERROR) << "Author signature doesn't match the previous one. "
-                   << "Update must be aborted";
+      try {
+        if (old_author_certificate != cert->getBase64()) {
+          LOG(ERROR) << "Author signature doesn't match the previous one. "
+                     << "Update must be aborted";
+          return Status::ERROR;
+        }
+      } catch (const ValidationCore::Certificate::Exception::Base &e) {
+        LOG(ERROR) << "Exception occured on cert-svc-vcore getBase64 "
+                   << "Dump : " << e.DumpToString();
         return Status::ERROR;
       }
     }
index ba111e3..3a4de79 100755 (executable)
@@ -6,7 +6,6 @@
 
 #include <boost/filesystem.hpp>
 #include <pkgmgr_installer.h>
-#include <vcore/Base64.h>
 #include <vcore/Certificate.h>
 
 #include <cassert>
@@ -47,23 +46,33 @@ Step::Status StepUnregisterApplication::precheck() {
   return Step::Status::OK;
 }
 
-void StepUnregisterApplication::BackupCertInfo() {
+bool StepUnregisterApplication::BackupCertInfo() {
   std::string base64 = QueryCertificateAuthorCertificate(context_->pkgid.get(),
                                                          context_->uid.get());
   if (!base64.empty()) {
-    ValidationCore::Base64Decoder decoder;
-    decoder.append(base64);
-    decoder.finalize();
     CertificateInfo certificate_info;
-    certificate_info.author_certificate.set(ValidationCore::CertificatePtr(
-        new ValidationCore::Certificate(decoder.get())));
+    try {
+      certificate_info.author_certificate.set(ValidationCore::CertificatePtr(
+          new ValidationCore::Certificate(
+              base64,
+              ValidationCore::Certificate::FormType::FORM_BASE64)));
+    } catch (const ValidationCore::Certificate::Exception::Base &e) {
+      LOG(ERROR) << "Exception in cert-svc-vcore Certificate "
+                 << "Dump : " << e.DumpToString();
+      return false;
+    }
     context_->certificate_info.set(certificate_info);
   }
+
+  return true;
 }
 
 Step::Status StepUnregisterApplication::process() {
   // Prepare certificate info for rollback operations
-  BackupCertInfo();
+  if (!BackupCertInfo()) {
+    LOG(ERROR) << "Failed to backup cert info";
+    return Status::ERROR;
+  }
 
   if (!UnregisterAppInPkgmgr(context_->xml_path.get(), context_->pkgid.get(),
                              context_->uid.get())) {
index cc86273..7d2ad1f 100755 (executable)
@@ -22,7 +22,7 @@ class StepUnregisterApplication : public Step {
   Status precheck() override;
 
  private:
-  void BackupCertInfo();
+  bool BackupCertInfo();
 
   SCOPE_LOG_TAG(Unregister)
 };
index 2978106..f0dbdf8 100644 (file)
@@ -9,7 +9,6 @@
 #include <unistd.h>
 
 #include <boost/filesystem.hpp>
-#include <vcore/Base64.h>
 #include <vcore/Certificate.h>
 
 #include <cassert>
@@ -47,13 +46,21 @@ Step::Status StepUpdateApplication::process() {
 
 Step::Status StepUpdateApplication::undo() {
   // Prepare certification info for revert
-  ValidationCore::Base64Decoder decoder;
-  decoder.append(QueryCertificateAuthorCertificate(context_->pkgid.get(),
-                                                   context_->uid.get()));
-  decoder.finalize();
+  std::string base64 = QueryCertificateAuthorCertificate(context_->pkgid.get(),
+                                                         context_->uid.get());
   CertificateInfo certificate_info;
-  certificate_info.author_certificate.set(ValidationCore::CertificatePtr(
-      new ValidationCore::Certificate(decoder.get())));
+  if (!base64.empty()) {
+    try {
+      certificate_info.author_certificate.set(ValidationCore::CertificatePtr(
+          new ValidationCore::Certificate(
+              base64,
+              ValidationCore::Certificate::FormType::FORM_BASE64)));
+    } catch (const ValidationCore::Certificate::Exception::Base &e) {
+      LOG(ERROR) << "Exception in cert-svc-vcore Certificate "
+                 << "Dump : " << e.DumpToString();
+      return Status::ERROR;
+    }
+  }
 
   if (!UpgradeAppInPkgmgr(context_->backup_xml_path.get(),
       context_->pkgid.get(), certificate_info,