From: Kyungwook Tak Date: Tue, 28 Jul 2015 02:45:16 +0000 (+0900) Subject: Catch exception occured from cert-svc-vcore X-Git-Tag: accepted/tizen/mobile/20150803.094133^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Fchanges%2F97%2F44797%2F3;p=platform%2Fcore%2Fappfw%2Fapp-installers.git Catch exception occured from cert-svc-vcore Change-Id: I04b9d4121ffd213ec1b978de23cbc1bed4989085 Signed-off-by: Kyungwook Tak --- diff --git a/src/common/step/step_check_old_certificate.cc b/src/common/step/step_check_old_certificate.cc index c2d714e..79e6592 100644 --- a/src/common/step/step_check_old_certificate.cc +++ b/src/common/step/step_check_old_certificate.cc @@ -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; } } diff --git a/src/common/step/step_unregister_app.cc b/src/common/step/step_unregister_app.cc index ba111e3..3a4de79 100755 --- a/src/common/step/step_unregister_app.cc +++ b/src/common/step/step_unregister_app.cc @@ -6,7 +6,6 @@ #include #include -#include #include #include @@ -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())) { diff --git a/src/common/step/step_unregister_app.h b/src/common/step/step_unregister_app.h index cc86273..7d2ad1f 100755 --- a/src/common/step/step_unregister_app.h +++ b/src/common/step/step_unregister_app.h @@ -22,7 +22,7 @@ class StepUnregisterApplication : public Step { Status precheck() override; private: - void BackupCertInfo(); + bool BackupCertInfo(); SCOPE_LOG_TAG(Unregister) }; diff --git a/src/common/step/step_update_app.cc b/src/common/step/step_update_app.cc index 2978106..f0dbdf8 100644 --- a/src/common/step/step_update_app.cc +++ b/src/common/step/step_update_app.cc @@ -9,7 +9,6 @@ #include #include -#include #include #include @@ -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,