Index: chrome/installer/util/google_update_util.cc |
diff --git a/chrome/installer/util/google_update_util.cc b/chrome/installer/util/google_update_util.cc |
index 748e3f6c2fe07824bf7ec6711f8c225b143aff0d..7681e03885ee4b270a6a0ad93470d913fdd0de17 100644 |
--- a/chrome/installer/util/google_update_util.cc |
+++ b/chrome/installer/util/google_update_util.cc |
@@ -132,25 +132,13 @@ bool IsUntrustedDataKeyValid(const std::string& key) { |
== key.end(); |
} |
-// Reads and parses untrusted data passed from Google Update as key-value |
-// pairs, then overwrites |untrusted_data_map| with the result. |
-// Returns true if data are successfully read. |
-bool GetGoogleUpdateUntrustedData( |
+bool ParseUntrustedData( |
grt (UTC plus 2)
2014/03/03 15:18:26
add doc comment
jackhou1
2014/03/04 00:56:28
Done.
|
+ const std::string& data_string, |
std::map<std::string, std::string>* untrusted_data) { |
- DCHECK(untrusted_data); |
- scoped_ptr<base::Environment> env(base::Environment::Create()); |
- std::string data_string; |
- if (env == NULL || !env->GetVar(kEnvVariableUntrustedData, &data_string)) |
- return false; |
- |
- if (data_string.length() > kEnvVariableUntrustedDataMaxLength || |
- !IsStringPrintable(data_string)) { |
- LOG(ERROR) << "Invalid value in " << kEnvVariableUntrustedData; |
+ if (!IsStringPrintable(data_string)) { |
+ LOG(ERROR) << "Invalid value in untrusted data string."; |
return false; |
} |
- |
- VLOG(1) << kEnvVariableUntrustedData << ": " << data_string; |
- |
std::vector<std::pair<std::string, std::string> > kv_pairs; |
if (!base::SplitStringIntoKeyValuePairs(data_string, '=', '&', &kv_pairs)) { |
LOG(ERROR) << "Failed to parse untrusted data: " << data_string; |
@@ -171,6 +159,27 @@ bool GetGoogleUpdateUntrustedData( |
return true; |
} |
+// Reads and parses untrusted data passed from Google Update as key-value |
+// pairs, then overwrites |untrusted_data_map| with the result. |
+// Returns true if data are successfully read. |
+bool GetGoogleUpdateUntrustedData( |
+ std::map<std::string, std::string>* untrusted_data) { |
+ DCHECK(untrusted_data); |
+ scoped_ptr<base::Environment> env(base::Environment::Create()); |
+ std::string data_string; |
+ if (env == NULL || !env->GetVar(kEnvVariableUntrustedData, &data_string)) |
grt (UTC plus 2)
2014/03/03 15:18:26
i think "!env" is more idomatic for testing that a
jackhou1
2014/03/04 00:56:28
Done.
|
+ return false; |
+ |
+ if (data_string.length() > kEnvVariableUntrustedDataMaxLength) { |
+ LOG(ERROR) << kEnvVariableUntrustedData << " is too long."; |
+ return false; |
+ } |
+ |
+ VLOG(1) << kEnvVariableUntrustedData << ": " << data_string; |
grt (UTC plus 2)
2014/03/03 15:18:26
don't log data_string here since IsStringPrintable
jackhou1
2014/03/04 00:56:28
Done.
|
+ |
+ return ParseUntrustedData(data_string, untrusted_data); |
+} |
+ |
} // namespace |
bool EnsureUserLevelGoogleUpdatePresent() { |
@@ -221,4 +230,21 @@ std::string GetUntrustedDataValue(const std::string& key) { |
return std::string(); |
} |
+std::string GetUntrustedDataValueFromTag(const std::string& tag, |
grt (UTC plus 2)
2014/03/03 15:18:26
should the size of |tag| be restricted in the same
jackhou1
2014/03/04 00:56:28
Done.
I'm don't know if there is a specific reaso
|
+ const std::string& key) { |
+ std::map<std::string, std::string> untrusted_data; |
+ if (ParseUntrustedData(tag, &untrusted_data)) { |
grt (UTC plus 2)
2014/03/03 15:18:26
without the logging calls (see next comment), i be
jackhou1
2014/03/04 00:56:28
Done.
|
+ std::map<std::string, std::string>::const_iterator data_it( |
+ untrusted_data.find(key)); |
+ if (data_it != untrusted_data.end()) { |
+ VLOG(1) << "Key " << key << " is " << data_it->second; |
grt (UTC plus 2)
2014/03/03 15:18:26
coding style says "Remove most logging calls befor
jackhou1
2014/03/04 00:56:28
Done.
|
+ return data_it->second; |
+ } else { |
+ VLOG(1) << "Key not found: " << key; |
+ } |
+ } |
+ |
+ return std::string(); |
+} |
+ |
} // namespace google_update |