diff options
author | mdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 23:00:36 +0000 |
---|---|---|
committer | mdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 23:00:36 +0000 |
commit | be4f599c6b0173b2543e639fef69e15225250557 (patch) | |
tree | 65bbb9f07763b12cce39fa17be13b949b917f67d /chrome/browser/password_manager | |
parent | 711d66657c1c7379869d1376aedb7b69a9db6576 (diff) | |
download | chromium_src-be4f599c6b0173b2543e639fef69e15225250557.zip chromium_src-be4f599c6b0173b2543e639fef69e15225250557.tar.gz chromium_src-be4f599c6b0173b2543e639fef69e15225250557.tar.bz2 |
Linux: improved pickle error checking in KWallet support code.
I'll try to merge this and r82747 to the 742 branch.
BUG=80728
Review URL: http://codereview.chromium.org/6893074
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83243 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/password_manager')
-rw-r--r-- | chrome/browser/password_manager/native_backend_kwallet_x.cc | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/chrome/browser/password_manager/native_backend_kwallet_x.cc b/chrome/browser/password_manager/native_backend_kwallet_x.cc index 7305747..5d27c62 100644 --- a/chrome/browser/password_manager/native_backend_kwallet_x.cc +++ b/chrome/browser/password_manager/native_backend_kwallet_x.cc @@ -497,14 +497,19 @@ void NativeBackendKWallet::DeserializeValue(const string& signon_realm, void* iter = NULL; int version = -1; - pickle.ReadInt(&iter, &version); - if (version != kPickleVersion) { + if (!pickle.ReadInt(&iter, &version) || version != kPickleVersion) { // This is the only version so far, so anything else is an error. + LOG(ERROR) << "Failed to deserialize KWallet entry " + << "(realm: " << signon_realm << ")"; return; } size_t count = 0; - pickle.ReadSize(&iter, &count); + if (!pickle.ReadSize(&iter, &count)) { + LOG(ERROR) << "Failed to deserialize KWallet entry " + << "(realm: " << signon_realm << ")"; + return; + } forms->reserve(forms->size() + count); for (size_t i = 0; i < count; ++i) { |