summaryrefslogtreecommitdiffstats
path: root/chrome/common/pepper_permission_util.cc
diff options
context:
space:
mode:
authoryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-15 01:26:39 +0000
committeryzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-15 01:26:39 +0000
commitdda548290e9f9a48c2fcd8ecc4a2c9cdb4b2fc0b (patch)
treeb9acb7bcd9208535f63844ab171e124f4aca2996 /chrome/common/pepper_permission_util.cc
parent21c9dee7008633174272cf5b61d547916ad31ad8 (diff)
downloadchromium_src-dda548290e9f9a48c2fcd8ecc4a2c9cdb4b2fc0b.zip
chromium_src-dda548290e9f9a48c2fcd8ecc4a2c9cdb4b2fc0b.tar.gz
chromium_src-dda548290e9f9a48c2fcd8ecc4a2c9cdb4b2fc0b.tar.bz2
Change the permission check for Pepper socket API to support both the public and private APIs.
BUG=247225 TEST=None Review URL: https://chromiumcodereview.appspot.com/17029002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@206533 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/common/pepper_permission_util.cc')
-rw-r--r--chrome/common/pepper_permission_util.cc38
1 files changed, 25 insertions, 13 deletions
diff --git a/chrome/common/pepper_permission_util.cc b/chrome/common/pepper_permission_util.cc
index 84992d4..b34e457 100644
--- a/chrome/common/pepper_permission_util.cc
+++ b/chrome/common/pepper_permission_util.cc
@@ -37,16 +37,13 @@ bool HostIsInSet(const std::string& host, const std::set<std::string>& set) {
bool IsExtensionOrSharedModuleWhitelisted(
const GURL& url,
const ExtensionSet* extension_set,
- const std::set<std::string>& whitelist,
- const char* command_line_switch) {
- const std::string host = url.host();
- if (!url.is_valid())
+ const std::set<std::string>& whitelist) {
+ if (!url.is_valid() || !url.SchemeIs(extensions::kExtensionScheme))
return false;
- if (url.SchemeIs(extensions::kExtensionScheme) &&
- HostIsInSet(host, whitelist)) {
+ const std::string host = url.host();
+ if (HostIsInSet(host, whitelist))
return true;
- }
// Check the modules that are imported by this extension to see if any of them
// is whitelisted.
@@ -69,22 +66,37 @@ bool IsExtensionOrSharedModuleWhitelisted(
}
}
+ return false;
+}
+
+bool IsHostAllowedByCommandLine(const GURL& url,
+ const ExtensionSet* extension_set,
+ const char* command_line_switch) {
+ if (!url.is_valid())
+ return false;
+
const CommandLine& command_line = *CommandLine::ForCurrentProcess();
const std::string allowed_list =
command_line.GetSwitchValueASCII(command_line_switch);
+ if (allowed_list.empty())
+ return false;
+
+ const std::string host = url.host();
if (allowed_list == "*") {
// For now, we only allow packaged and platform apps in this wildcard.
+ if (!extension_set || !url.SchemeIs(extensions::kExtensionScheme))
+ return false;
+
+ const Extension* extension = extension_set->GetByID(host);
return extension &&
(extension->GetType() == Manifest::TYPE_LEGACY_PACKAGED_APP ||
extension->GetType() == Manifest::TYPE_PLATFORM_APP);
}
- if (!allowed_list.empty()) {
- base::StringTokenizer t(allowed_list, ",");
- while (t.GetNext()) {
- if (t.token() == host)
- return true;
- }
+ base::StringTokenizer t(allowed_list, ",");
+ while (t.GetNext()) {
+ if (t.token() == host)
+ return true;
}
return false;