diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-02 15:53:06 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-12-02 15:53:06 +0000 |
commit | 5d099a3c4a7a913ca2eadbe06ea4c44353d188bb (patch) | |
tree | 724f6619fb52adfa17c74a7137418bf972e4f0bc /chrome/browser/extensions/extension_file_util.cc | |
parent | 0152b52ad24a092dc966536e8dd7e334482463a0 (diff) | |
download | chromium_src-5d099a3c4a7a913ca2eadbe06ea4c44353d188bb.zip chromium_src-5d099a3c4a7a913ca2eadbe06ea4c44353d188bb.tar.gz chromium_src-5d099a3c4a7a913ca2eadbe06ea4c44353d188bb.tar.bz2 |
Validate privacy blacklist format when validating an extension
containing a privacy blacklist.
TEST=Covered by unit_tests.
BUG=21541
Review URL: http://codereview.chromium.org/453016
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@33573 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_file_util.cc')
-rw-r--r-- | chrome/browser/extensions/extension_file_util.cc | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/chrome/browser/extensions/extension_file_util.cc b/chrome/browser/extensions/extension_file_util.cc index 0bb2ff8..a1cace7 100644 --- a/chrome/browser/extensions/extension_file_util.cc +++ b/chrome/browser/extensions/extension_file_util.cc @@ -10,6 +10,8 @@ #include "base/scoped_temp_dir.h" #include "base/string_util.h" #include "chrome/browser/extensions/extension_prefs.h" +#include "chrome/browser/privacy_blacklist/blacklist.h" +#include "chrome/browser/privacy_blacklist/blacklist_io.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_constants.h" @@ -224,13 +226,23 @@ bool ValidateExtension(Extension* extension, std::string* error) { } } - // Validate claimed privacy blacklists paths. + // Validate claimed privacy blacklists. for (size_t i = 0; i < extension->privacy_blacklists().size(); ++i) { - const Extension::PrivacyBlacklistInfo& blacklist = + const Extension::PrivacyBlacklistInfo& blacklist_info = extension->privacy_blacklists()[i]; - if (!file_util::PathExists(blacklist.path)) { - *error = StringPrintf("Could not load '%s' for privacy blacklist.", - WideToUTF8(blacklist.path.ToWStringHack()).c_str()); + std::string path_utf8(WideToUTF8(blacklist_info.path.ToWStringHack())); + if (!file_util::PathExists(blacklist_info.path)) { + *error = StringPrintf("Could not load '%s' for privacy blacklist: " + "file does not exist.", + path_utf8.c_str()); + return false; + } + Blacklist blacklist; + std::string parsing_error; + if (!BlacklistIO::ReadText(&blacklist, blacklist_info.path, + &parsing_error)) { + *error = StringPrintf("Could not load '%s' for privacy blacklist: %s", + path_utf8.c_str(), parsing_error.c_str()); return false; } } |