diff options
author | albertb@chromium.org <albertb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-21 17:45:45 +0000 |
---|---|---|
committer | albertb@chromium.org <albertb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-21 17:45:45 +0000 |
commit | d1586a238938a59efbb1aa7cba38f1d58fef66de (patch) | |
tree | 4e8648a629b32b74e36d2e640a6f4a6fe259d2fd | |
parent | c2514ba22a333d2ab74a15b9c6e65ba1180d4e64 (diff) | |
download | chromium_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.cc | 5 | ||||
-rw-r--r-- | chrome/browser/sync/util/user_settings_unittest.cc | 11 |
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); } |