diff options
author | cdn@chromium.org <cdn@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-23 18:47:01 +0000 |
---|---|---|
committer | cdn@chromium.org <cdn@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-23 18:47:01 +0000 |
commit | d053bf0457c125bc81212dcbbc5186f714ea041b (patch) | |
tree | 9fdfbef3a5848655c7bd147ac6fd4ed0c05935b9 | |
parent | 63d52bb8d4f6a4f7950ed43d874de14ebf0fa274 (diff) | |
download | chromium_src-d053bf0457c125bc81212dcbbc5186f714ea041b.zip chromium_src-d053bf0457c125bc81212dcbbc5186f714ea041b.tar.gz chromium_src-d053bf0457c125bc81212dcbbc5186f714ea041b.tar.bz2 |
Merge 82297 - Make sure that extensions can launch web urls with web safe schemes only.
Reviewed in http://codereview.chromium.org/6879047.
BUG=79862
TEST=ExtensionManifestTest.AppLaunchURL
Review URL: http://codereview.chromium.org/6879077
Review URL: http://codereview.chromium.org/6990039
git-svn-id: svn://svn.chromium.org/chrome/branches/742/src@86313 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/common/extensions/extension.cc | 6 | ||||
-rw-r--r-- | chrome/common/extensions/extension_manifests_unittest.cc | 6 | ||||
-rw-r--r-- | chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_1.json (renamed from chrome/test/data/extensions/manifest_tests/launch_url_invalid_type.json) | 0 | ||||
-rw-r--r-- | chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_2.json | 9 | ||||
-rw-r--r-- | chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_3.json | 9 |
5 files changed, 27 insertions, 3 deletions
diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc index 21dd73c..e7b391a 100644 --- a/chrome/common/extensions/extension.cc +++ b/chrome/common/extensions/extension.cc @@ -1278,8 +1278,10 @@ bool Extension::LoadLaunchURL(const DictionaryValue* manifest, return false; } - // Ensure the launch URL is a valid absolute URL. - if (!GURL(launch_url).is_valid()) { + // Ensure the launch URL is a valid absolute URL and web extent scheme. + GURL url(launch_url); + URLPattern pattern(kValidWebExtentSchemes); + if (!url.is_valid() || !pattern.SetScheme(url.scheme())) { *error = errors::kInvalidLaunchWebURL; return false; } diff --git a/chrome/common/extensions/extension_manifests_unittest.cc b/chrome/common/extensions/extension_manifests_unittest.cc index f304619..641cd66 100644 --- a/chrome/common/extensions/extension_manifests_unittest.cc +++ b/chrome/common/extensions/extension_manifests_unittest.cc @@ -256,7 +256,11 @@ TEST_F(ExtensionManifestTest, AppLaunchURL) { errors::kInvalidLaunchLocalPath); LoadAndExpectError("launch_path_invalid_value.json", errors::kInvalidLaunchLocalPath); - LoadAndExpectError("launch_url_invalid_type.json", + LoadAndExpectError("launch_url_invalid_type_1.json", + errors::kInvalidLaunchWebURL); + LoadAndExpectError("launch_url_invalid_type_2.json", + errors::kInvalidLaunchWebURL); + LoadAndExpectError("launch_url_invalid_type_3.json", errors::kInvalidLaunchWebURL); scoped_refptr<Extension> extension; diff --git a/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type.json b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_1.json index 17a7d88..17a7d88 100644 --- a/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type.json +++ b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_1.json diff --git a/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_2.json b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_2.json new file mode 100644 index 0000000..e6b9a99 --- /dev/null +++ b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_2.json @@ -0,0 +1,9 @@ +{ + "name": "test", + "version": "1", + "app": { + "launch": { + "web_url": "chrome://history/" + } + } +} diff --git a/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_3.json b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_3.json new file mode 100644 index 0000000..ce69fb0 --- /dev/null +++ b/chrome/test/data/extensions/manifest_tests/launch_url_invalid_type_3.json @@ -0,0 +1,9 @@ +{ + "name": "test", + "version": "1", + "app": { + "launch": { + "web_url": "javascript:alert(1)" + } + } +} |