summaryrefslogtreecommitdiffstats
path: root/chrome/browser/password_manager
diff options
context:
space:
mode:
authormdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 23:00:36 +0000
committermdm@chromium.org <mdm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 23:00:36 +0000
commitbe4f599c6b0173b2543e639fef69e15225250557 (patch)
tree65bbb9f07763b12cce39fa17be13b949b917f67d /chrome/browser/password_manager
parent711d66657c1c7379869d1376aedb7b69a9db6576 (diff)
downloadchromium_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.cc11
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) {