summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbertb@chromium.org <albertb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-21 17:45:45 +0000
committeralbertb@chromium.org <albertb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-21 17:45:45 +0000
commitd1586a238938a59efbb1aa7cba38f1d58fef66de (patch)
tree4e8648a629b32b74e36d2e640a6f4a6fe259d2fd
parentc2514ba22a333d2ab74a15b9c6e65ba1180d4e64 (diff)
downloadchromium_src-d1586a238938a59efbb1aa7cba38f1d58fef66de.zip
chromium_src-d1586a238938a59efbb1aa7cba38f1d58fef66de.tar.gz
chromium_src-d1586a238938a59efbb1aa7cba38f1d58fef66de.tar.bz2
Load the token from the user settings DB as a blob because it might include
NULLs now that encrypt it. BUG=49593 TEST=manually tested + updated unit tests Review URL: http://codereview.chromium.org/3058003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@53210 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/sync/util/user_settings_posix.cc5
-rw-r--r--chrome/browser/sync/util/user_settings_unittest.cc11
2 files changed, 12 insertions, 4 deletions
diff --git a/chrome/browser/sync/util/user_settings_posix.cc b/chrome/browser/sync/util/user_settings_posix.cc
index da9a944..f3f6cdc 100644
--- a/chrome/browser/sync/util/user_settings_posix.cc
+++ b/chrome/browser/sync/util/user_settings_posix.cc
@@ -33,7 +33,8 @@ void UserSettings::SetAuthTokenForService(
"values (?, ?, ?)");
statement.bind_string(0, email);
statement.bind_string(1, service_name);
- statement.bind_string(2, encrypted_service_token);
+ statement.bind_blob(2, encrypted_service_token.data(),
+ encrypted_service_token.size());
if (SQLITE_DONE != statement.step()) {
LOG(FATAL) << sqlite3_errmsg(dbhandle.get());
}
@@ -51,7 +52,7 @@ bool UserSettings::GetLastUserAndServiceToken(const std::string& service_name,
if (SQLITE_ROW == query.step()) {
std::string encrypted_service_token;
- query.column_string(1, &encrypted_service_token);
+ query.column_blob_as_string(1, &encrypted_service_token);
if (!Encryptor::DecryptString(encrypted_service_token, service_token)) {
LOG(ERROR) << "Decryption failed: " << encrypted_service_token;
return false;
diff --git a/chrome/browser/sync/util/user_settings_unittest.cc b/chrome/browser/sync/util/user_settings_unittest.cc
index 36af0e8..036dcd3 100644
--- a/chrome/browser/sync/util/user_settings_unittest.cc
+++ b/chrome/browser/sync/util/user_settings_unittest.cc
@@ -254,11 +254,18 @@ TEST_F(UserSettingsTest, PersistNonEmptyToken) {
ASSERT_TRUE(temp_dir.CreateUniqueTempDir());
UserSettings settings;
settings.Init(temp_dir.path().AppendASCII("UserSettings.sqlite3"));
- settings.SetAuthTokenForService("username", "service", "012345beefbeef");
+ settings.SetAuthTokenForService("username", "service",
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah"
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah"
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah");
std::string username;
std::string token;
ASSERT_TRUE(settings.GetLastUserAndServiceToken("service", &username,
&token));
- EXPECT_EQ("012345beefbeef", token);
+ EXPECT_EQ(
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah"
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah"
+ "oonetuhasonteuhasonetuhasonetuhasonetuhasouhasonetuhasonetuhasonetuhah",
+ token);
EXPECT_EQ("username", username);
}