From 31e93b290f9437e65c84833333531c0562ee393f Mon Sep 17 00:00:00 2001 From: Jihoon Chung Date: Thu, 25 Apr 2013 17:06:46 +0900 Subject: [PATCH] Implement distinguish security model version [Issue#] N/A [Problem] N/A [Cause] N/A [Solution] After enable CSP and allow-navigation, WRT should distinguish security model. This needs to avoid conflict between each security model. V1 : only handled by WARP v2 : main resource - allow-navigation sub resource - CSP [SCMRequest] must be imported with wrt-commons Change-Id: Ifd56cb56789fa3a0e20d1b6e89ab4d9aaa33bad2 --- src/jobs/widget_install/task_widget_config.cpp | 41 ++++++++++++++++++++++++++ src/jobs/widget_install/task_widget_config.h | 1 + 2 files changed, 42 insertions(+) diff --git a/src/jobs/widget_install/task_widget_config.cpp b/src/jobs/widget_install/task_widget_config.cpp index ac99419..c5bbc5b 100644 --- a/src/jobs/widget_install/task_widget_config.cpp +++ b/src/jobs/widget_install/task_widget_config.cpp @@ -78,6 +78,7 @@ TaskWidgetConfig::TaskWidgetConfig(InstallerContext& installContext) : AddStep(&TaskWidgetConfig::ProcessLocalizedIcons); AddStep(&TaskWidgetConfig::ProcessWidgetInstalledPath); AddStep(&TaskWidgetConfig::ProcessAppControlInfo); + AddStep(&TaskWidgetConfig::ProcessSecurityModel); AddStep(&TaskWidgetConfig::StepVerifyFeatures); AddStep(&TaskWidgetConfig::StepCheckMinVersionInfo); } @@ -408,6 +409,46 @@ void TaskWidgetConfig::ProcessAppControlInfo() } } +void TaskWidgetConfig::ProcessSecurityModel() +{ + bool isSecurityModelV1 = false; + bool isSecurityModelV2 = false; + WrtDB::ConfigParserData &data = m_installContext.widgetConfig.configInfo; + + // WARP is V1 + if (!data.accessInfoSet.empty()) { + isSecurityModelV1 = true; + } + + // CSP is V2 + if (!data.cspPolicy.IsNull() || !data.cspPolicyReportOnly.IsNull()) { + isSecurityModelV2 = true; + } + + // allow-navigation is V2 + if (!data.allowNavigationInfoList.empty()) { + isSecurityModelV2 = true; + } + + if (isSecurityModelV1 && isSecurityModelV2) { + LogError("Security model is conflict"); + ThrowMsg(Exceptions::NotAllowed, "Security model is conflict"); + } else if (isSecurityModelV1) { + data.securityModelVersion = + WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V1; + } else if (isSecurityModelV2) { + data.securityModelVersion = + WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V2; + } else { + data.securityModelVersion = + WrtDB::ConfigParserData::SecurityModelVersion::SECURITY_MODEL_V1; + } + + m_installContext.job->UpdateProgress( + InstallerContext::INSTALL_WIDGET_CONFIG2, + "Finished process security model"); +} + void TaskWidgetConfig::StepCheckMinVersionInfo() { if (!isMinVersionCompatible( diff --git a/src/jobs/widget_install/task_widget_config.h b/src/jobs/widget_install/task_widget_config.h index b267257..6b500d3 100644 --- a/src/jobs/widget_install/task_widget_config.h +++ b/src/jobs/widget_install/task_widget_config.h @@ -79,6 +79,7 @@ class TaskWidgetConfig : void ProcessIcon(const WrtDB::ConfigParserData::Icon& icon); void ProcessWidgetInstalledPath(); void ProcessAppControlInfo(); + void ProcessSecurityModel(); void StepVerifyFeatures(); void StepCheckMinVersionInfo(); -- 2.7.4