diff options
author | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-15 01:26:39 +0000 |
---|---|---|
committer | yzshen@chromium.org <yzshen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-15 01:26:39 +0000 |
commit | dda548290e9f9a48c2fcd8ecc4a2c9cdb4b2fc0b (patch) | |
tree | b9acb7bcd9208535f63844ab171e124f4aca2996 /chrome/common/pepper_permission_util.cc | |
parent | 21c9dee7008633174272cf5b61d547916ad31ad8 (diff) | |
download | chromium_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.cc | 38 |
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; |