summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author Eric Hameleers <alien@slackware.com>2015-07-08 17:44:13 +0000
committer Eric Hameleers <alien@slackware.com>2015-07-08 17:44:13 +0000
commitbaec2225fe0a1c758cff4d43874a9a538a25fa3e (patch)
tree368ee1bb081908d7b7d579eab167bdb2169441fe
parent6019ed5724ae6dee0c29bec972a82e3cd5920377 (diff)
downloadasb-baec2225fe0a1c758cff4d43874a9a538a25fa3e.tar.gz
asb-baec2225fe0a1c758cff4d43874a9a538a25fa3e.tar.xz
Initial revision
-rw-r--r--chromium/build/patches/chromium_base_pickles.patch273
-rw-r--r--chromium/build/patches/chromium_kde_pickles.patch251
2 files changed, 524 insertions, 0 deletions
diff --git a/chromium/build/patches/chromium_base_pickles.patch b/chromium/build/patches/chromium_base_pickles.patch
new file mode 100644
index 00000000..a3f1edfc
--- /dev/null
+++ b/chromium/build/patches/chromium_base_pickles.patch
@@ -0,0 +1,273 @@
+Change most uses of Pickle to base::Pickle
+
+There should be no behavior change.
+
+TBR=jschuh (IPC messages)
+
+Review URL: https://codereview.chromium.org/1154283003
+
+Cr-Commit-Position: refs/heads/master@{#332552}
+
+#
+# Limited patch for Slackware, only addressing native_backend_kwallet_x
+#
+
+diff --git a/chrome/browser/password_manager/native_backend_kwallet_x.cc b/chrome/browser/password_manager/native_backend_kwallet_x.cc
+index 85ac9c7..12536ed 100644
+--- a/chrome/browser/password_manager/native_backend_kwallet_x.cc
++++ b/chrome/browser/password_manager/native_backend_kwallet_x.cc
+
+@@ -67,8 +67,8 @@
+ bool CheckSerializedValue(const uint8_t* byte_array,
+ size_t length,
+ const std::string& realm) {
+- const Pickle::Header* header =
+- reinterpret_cast<const Pickle::Header*>(byte_array);
++ const base::Pickle::Header* header =
++ reinterpret_cast<const base::Pickle::Header*>(byte_array);
+ if (length < sizeof(*header) ||
+ header->payload_size > length - sizeof(*header)) {
+ LOG(WARNING) << "Invalid KWallet entry detected (realm: " << realm << ")";
+@@ -79,7 +79,7 @@
+
+ // Convenience function to read a GURL from a Pickle. Assumes the URL has
+ // been written as a UTF-8 string. Returns true on success.
+-bool ReadGURL(PickleIterator* iter, bool warn_only, GURL* url) {
++bool ReadGURL(base::PickleIterator* iter, bool warn_only, GURL* url) {
+ std::string url_string;
+ if (!iter->ReadString(&url_string)) {
+ if (!warn_only)
+@@ -113,12 +113,12 @@
+ // as either size when reading old pickles that fail to deserialize using the
+ // native size. Returns true on success.
+ bool DeserializeValueSize(const std::string& signon_realm,
+- const PickleIterator& init_iter,
++ const base::PickleIterator& init_iter,
+ int version,
+ bool size_32,
+ bool warn_only,
+ ScopedVector<autofill::PasswordForm>* forms) {
+- PickleIterator iter = init_iter;
++ base::PickleIterator iter = init_iter;
+
+ size_t count = 0;
+ if (size_32) {
+@@ -235,7 +235,7 @@
+
+ // Serializes a list of PasswordForms to be stored in the wallet.
+ void SerializeValue(const std::vector<autofill::PasswordForm*>& forms,
+- Pickle* pickle) {
++ base::Pickle* pickle) {
+ pickle->WriteInt(kPickleVersion);
+ pickle->WriteSizeT(forms.size());
+ for (autofill::PasswordForm* form : forms) {
+@@ -637,7 +637,7 @@
+ }
+
+ // Can't we all just agree on whether bytes are signed or not? Please?
+- Pickle pickle(reinterpret_cast<const char*>(bytes), length);
++ base::Pickle pickle(reinterpret_cast<const char*>(bytes), length);
+ *forms = DeserializeValue(signon_realm, pickle);
+ }
+
+@@ -719,7 +719,7 @@
+ continue;
+
+ // Can't we all just agree on whether bytes are signed or not? Please?
+- Pickle pickle(reinterpret_cast<const char*>(bytes), length);
++ base::Pickle pickle(reinterpret_cast<const char*>(bytes), length);
+ AppendSecondToFirst(forms, DeserializeValue(signon_realm, pickle));
+ }
+ return true;
+@@ -756,7 +756,7 @@
+ return ret == 0;
+ }
+
+- Pickle value;
++ base::Pickle value;
+ SerializeValue(forms, &value);
+
+ dbus::MethodCall method_call(kKWalletInterface, "writeEntry");
+@@ -856,7 +856,7 @@
+ continue;
+
+ // Can't we all just agree on whether bytes are signed or not? Please?
+- Pickle pickle(reinterpret_cast<const char*>(bytes), length);
++ base::Pickle pickle(reinterpret_cast<const char*>(bytes), length);
+ ScopedVector<autofill::PasswordForm> all_forms =
+ DeserializeValue(signon_realm, pickle);
+
+@@ -888,8 +888,8 @@
+ // static
+ ScopedVector<autofill::PasswordForm> NativeBackendKWallet::DeserializeValue(
+ const std::string& signon_realm,
+- const Pickle& pickle) {
+- PickleIterator iter(pickle);
++ const base::Pickle& pickle) {
++ base::PickleIterator iter(pickle);
+
+ int version = -1;
+ if (!iter.ReadInt(&version) ||
+
+diff --git a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
+index 297a765..9c3a37c 100644
+--- a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
++++ b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
+
+@@ -605,7 +605,8 @@
+ EXPECT_EQ(sorted_expected[i].first, entries[i]);
+ TestKWallet::Blob value;
+ EXPECT_TRUE(wallet_.readEntry(folder, entries[i], &value));
+- Pickle pickle(reinterpret_cast<const char*>(value.data()), value.size());
++ base::Pickle pickle(reinterpret_cast<const char*>(value.data()),
++ value.size());
+ ScopedVector<autofill::PasswordForm> forms =
+ NativeBackendKWalletStub::DeserializeValue(entries[i], pickle);
+ const std::vector<const PasswordForm*>& expect = sorted_expected[i].second;
+@@ -930,14 +931,14 @@
+
+ class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase {
+ protected:
+- void CreateVersion6Pickle(const PasswordForm& form, Pickle* pickle);
+- void CreateVersion5Pickle(const PasswordForm& form, Pickle* pickle);
+- void CreateVersion3Pickle(const PasswordForm& form, Pickle* pickle);
+- void CreateVersion2Pickle(const PasswordForm& form, Pickle* pickle);
+- void CreateVersion1Pickle(const PasswordForm& form, Pickle* pickle);
++ void CreateVersion6Pickle(const PasswordForm& form, base::Pickle* pickle);
++ void CreateVersion5Pickle(const PasswordForm& form, base::Pickle* pickle);
++ void CreateVersion3Pickle(const PasswordForm& form, base::Pickle* pickle);
++ void CreateVersion2Pickle(const PasswordForm& form, base::Pickle* pickle);
++ void CreateVersion1Pickle(const PasswordForm& form, base::Pickle* pickle);
+ void CreateVersion0Pickle(bool size_32,
+ const PasswordForm& form,
+- Pickle* pickle);
++ base::Pickle* pickle);
+ void CheckVersion6Pickle();
+ void CheckVersion5Pickle();
+ void CheckVersion3Pickle();
+@@ -953,12 +954,12 @@
+ void CreatePickle(bool size_32,
+ bool date_created_internal,
+ const PasswordForm& form,
+- Pickle* pickle);
++ base::Pickle* pickle);
+ };
+
+ void NativeBackendKWalletPickleTest::CreateVersion6Pickle(
+ const PasswordForm& form,
+- Pickle* pickle) {
++ base::Pickle* pickle) {
+ pickle->WriteInt(6);
+ CreatePickle(false, true, form, pickle);
+ pickle->WriteInt(form.type);
+@@ -974,7 +975,7 @@
+
+ void NativeBackendKWalletPickleTest::CreateVersion5Pickle(
+ const PasswordForm& form,
+- Pickle* pickle) {
++ base::Pickle* pickle) {
+ pickle->WriteInt(5);
+ CreatePickle(false, true, form, pickle);
+ pickle->WriteInt(form.type);
+@@ -988,7 +989,8 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CreateVersion3Pickle(
+- const PasswordForm& form, Pickle* pickle) {
++ const PasswordForm& form,
++ base::Pickle* pickle) {
+ pickle->WriteInt(3);
+ CreatePickle(false, false, form, pickle);
+ pickle->WriteInt(form.type);
+@@ -998,7 +1000,8 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CreateVersion2Pickle(
+- const PasswordForm& form, Pickle* pickle) {
++ const PasswordForm& form,
++ base::Pickle* pickle) {
+ pickle->WriteInt(2);
+ CreatePickle(false, false, form, pickle);
+ pickle->WriteInt(form.type);
+@@ -1007,13 +1010,16 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CreateVersion1Pickle(
+- const PasswordForm& form, Pickle* pickle) {
++ const PasswordForm& form,
++ base::Pickle* pickle) {
+ pickle->WriteInt(1);
+ CreatePickle(false, false, form, pickle);
+ }
+
+ void NativeBackendKWalletPickleTest::CreateVersion0Pickle(
+- bool size_32, const PasswordForm& form, Pickle* pickle) {
++ bool size_32,
++ const PasswordForm& form,
++ base::Pickle* pickle) {
+ pickle->WriteInt(0);
+ CreatePickle(size_32, false, form, pickle);
+ }
+@@ -1021,7 +1027,7 @@
+ void NativeBackendKWalletPickleTest::CreatePickle(bool size_32,
+ bool date_created_internal,
+ const PasswordForm& form,
+- Pickle* pickle) {
++ base::Pickle* pickle) {
+ if (size_32)
+ pickle->WriteUInt32(1); // Size of form list. 32 bits.
+ else
+@@ -1044,7 +1050,7 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CheckVersion6Pickle() {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = form_google_;
+ form.generation_upload_status = PasswordForm::NEGATIVE_SIGNAL_SENT;
+ CreateVersion6Pickle(form, &pickle);
+@@ -1059,7 +1065,7 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CheckVersion5Pickle() {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = form_google_;
+ CreateVersion5Pickle(form, &pickle);
+
+@@ -1072,7 +1078,7 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CheckVersion3Pickle() {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = form_google_;
+ // Remove the fields which were not present in version #3.
+ form.display_name.clear();
+@@ -1090,7 +1096,7 @@
+ }
+
+ void NativeBackendKWalletPickleTest::CheckVersion2Pickle() {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = old_form_google_;
+ form.times_used = form_google_.times_used;
+ form.type = form_google_.type;
+@@ -1107,7 +1113,7 @@
+
+ // Make sure that we can still read version 1 pickles.
+ void NativeBackendKWalletPickleTest::CheckVersion1Pickle() {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = form_google_;
+ CreateVersion1Pickle(form, &pickle);
+
+@@ -1123,7 +1129,7 @@
+
+ void NativeBackendKWalletPickleTest::CheckVersion0Pickle(
+ bool size_32, PasswordForm::Scheme scheme) {
+- Pickle pickle;
++ base::Pickle pickle;
+ PasswordForm form = old_form_google_;
+ form.scheme = scheme;
+ CreateVersion0Pickle(size_32, form, &pickle);
diff --git a/chromium/build/patches/chromium_kde_pickles.patch b/chromium/build/patches/chromium_kde_pickles.patch
new file mode 100644
index 00000000..0b3b1e55
--- /dev/null
+++ b/chromium/build/patches/chromium_kde_pickles.patch
@@ -0,0 +1,251 @@
+[Password manager] Fix pickle creatin for KDE, bump to version 7
+
+As described in http://crbug.com/494229#c11, version 6 pickles have been stored without generation_upload_status recently. This extends the definition of version 6 pickle to have this field optional.
+
+This CL introduces version 7 which makes that field required, and adds graceful handling of version 6.
+
+BUG=494229
+
+Review URL: https://codereview.chromium.org/1181203003
+
+Cr-Commit-Position: refs/heads/master@{#334561}
+diff --git a/chrome/browser/password_manager/native_backend_kwallet_x.cc b/chrome/browser/password_manager/native_backend_kwallet_x.cc
+index 12536ed..78aa1d9 100644
+--- a/chrome/browser/password_manager/native_backend_kwallet_x.cc
++++ b/chrome/browser/password_manager/native_backend_kwallet_x.cc
+@@ -30,7 +30,7 @@
+
+ // In case the fields in the pickle ever change, version them so we can try to
+ // read old pickles. (Note: do not eat old pickles past the expiration date.)
+-const int kPickleVersion = 6;
++const int kPickleVersion = 7;
+
+ // We could localize this string, but then changing your locale would cause
+ // you to lose access to all your stored passwords. Maybe best not to do that.
+@@ -218,12 +218,18 @@
+ }
+
+ if (version > 5) {
+- if (!iter.ReadInt(&generation_upload_status)) {
++ bool read_success = iter.ReadInt(&generation_upload_status);
++ if (!read_success && version > 6) {
++ // Valid version 6 pickles might still lack the
++ // generation_upload_status, see http://crbug.com/494229#c11.
+ LogDeserializationWarning(version, signon_realm, false);
++ return false;
+ }
+- form->generation_upload_status =
+- static_cast<PasswordForm::GenerationUploadStatus>(
+- generation_upload_status);
++ if (read_success) {
++ form->generation_upload_status =
++ static_cast<PasswordForm::GenerationUploadStatus>(
++ generation_upload_status);
++ }
+ }
+
+ converted_forms.push_back(form.Pass());
+@@ -259,6 +265,7 @@
+ pickle->WriteString(form->avatar_url.spec());
+ pickle->WriteString(form->federation_url.spec());
+ pickle->WriteBool(form->skip_zero_click);
++ pickle->WriteInt(form->generation_upload_status);
+ }
+ }
+
+diff --git a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
+index 670cf41..b1a9524 100644
+--- a/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
++++ b/chrome/browser/password_manager/native_backend_kwallet_x_unittest.cc
+@@ -173,6 +173,7 @@
+ form_google_.avatar_url = GURL("http://www.google.com/avatar");
+ form_google_.federation_url = GURL("http://www.google.com/federation_url");
+ form_google_.skip_zero_click = true;
++ form_google_.generation_upload_status = PasswordForm::NEGATIVE_SIGNAL_SENT;
+
+ form_isc_.origin = GURL("http://www.isc.org/");
+ form_isc_.action = GURL("http://www.isc.org/auth");
+@@ -934,15 +935,21 @@
+
+ class NativeBackendKWalletPickleTest : public NativeBackendKWalletTestBase {
+ protected:
+- void CreateVersion6Pickle(const PasswordForm& form, base::Pickle* pickle);
+- void CreateVersion5Pickle(const PasswordForm& form, base::Pickle* pickle);
+- void CreateVersion3Pickle(const PasswordForm& form, base::Pickle* pickle);
+- void CreateVersion2Pickle(const PasswordForm& form, base::Pickle* pickle);
+- void CreateVersion1Pickle(const PasswordForm& form, base::Pickle* pickle);
++ // Based on |form|, fills |pickle| with data conforming to
++ // |effective_version|, but marking the pickle version as |stored_version|. In
++ // most cases the two versions should be the same.
++ void CreateVersion1PlusPickle(const PasswordForm& form,
++ base::Pickle* pickle,
++ int stored_version,
++ int effective_version);
+ void CreateVersion0Pickle(bool size_32,
+ const PasswordForm& form,
+ base::Pickle* pickle);
+- void CheckVersion6Pickle();
++ // As explained in http://crbug.com/494229#c11, version 6 added a new optional
++ // field to version 5. This field became required in version 7. Depending on
++ // |with_optional_field|, this method checks deserialization with or without
++ // the optional field.
++ void CheckVersion6Pickle(bool with_optional_field);
+ void CheckVersion5Pickle();
+ void CheckVersion3Pickle();
+ void CheckVersion2Pickle();
+@@ -960,63 +967,30 @@
+ base::Pickle* pickle);
+ };
+
+-void NativeBackendKWalletPickleTest::CreateVersion6Pickle(
++void NativeBackendKWalletPickleTest::CreateVersion1PlusPickle(
+ const PasswordForm& form,
+- base::Pickle* pickle) {
+- pickle->WriteInt(6);
++ base::Pickle* pickle,
++ int stored_version,
++ int effective_version) {
++ pickle->WriteInt(stored_version);
+ CreatePickle(false, true, form, pickle);
++ if (effective_version < 2)
++ return;
+ pickle->WriteInt(form.type);
+ pickle->WriteInt(form.times_used);
+ autofill::SerializeFormData(form.form_data, pickle);
++ if (effective_version < 3)
++ return;
+ pickle->WriteInt64(form.date_synced.ToInternalValue());
++ if (effective_version < 4)
++ return;
+ pickle->WriteString16(form.display_name);
+ pickle->WriteString(form.avatar_url.spec());
+ pickle->WriteString(form.federation_url.spec());
+ pickle->WriteBool(form.skip_zero_click);
++ if (effective_version < 7)
++ return;
+ pickle->WriteInt(form.generation_upload_status);
+-}
+-
+-void NativeBackendKWalletPickleTest::CreateVersion5Pickle(
+- const PasswordForm& form,
+- base::Pickle* pickle) {
+- pickle->WriteInt(5);
+- CreatePickle(false, true, form, pickle);
+- pickle->WriteInt(form.type);
+- pickle->WriteInt(form.times_used);
+- autofill::SerializeFormData(form.form_data, pickle);
+- pickle->WriteInt64(form.date_synced.ToInternalValue());
+- pickle->WriteString16(form.display_name);
+- pickle->WriteString(form.avatar_url.spec());
+- pickle->WriteString(form.federation_url.spec());
+- pickle->WriteBool(form.skip_zero_click);
+-}
+-
+-void NativeBackendKWalletPickleTest::CreateVersion3Pickle(
+- const PasswordForm& form,
+- base::Pickle* pickle) {
+- pickle->WriteInt(3);
+- CreatePickle(false, false, form, pickle);
+- pickle->WriteInt(form.type);
+- pickle->WriteInt(form.times_used);
+- autofill::SerializeFormData(form.form_data, pickle);
+- pickle->WriteInt64(form.date_synced.ToInternalValue());
+-}
+-
+-void NativeBackendKWalletPickleTest::CreateVersion2Pickle(
+- const PasswordForm& form,
+- base::Pickle* pickle) {
+- pickle->WriteInt(2);
+- CreatePickle(false, false, form, pickle);
+- pickle->WriteInt(form.type);
+- pickle->WriteInt(form.times_used);
+- autofill::SerializeFormData(form.form_data, pickle);
+-}
+-
+-void NativeBackendKWalletPickleTest::CreateVersion1Pickle(
+- const PasswordForm& form,
+- base::Pickle* pickle) {
+- pickle->WriteInt(1);
+- CreatePickle(false, false, form, pickle);
+ }
+
+ void NativeBackendKWalletPickleTest::CreateVersion0Pickle(
+@@ -1052,11 +1026,15 @@
+ pickle->WriteInt64(form.date_created.ToTimeT());
+ }
+
+-void NativeBackendKWalletPickleTest::CheckVersion6Pickle() {
++void NativeBackendKWalletPickleTest::CheckVersion6Pickle(
++ bool with_optional_field) {
+ base::Pickle pickle;
+ PasswordForm form = form_google_;
+- form.generation_upload_status = PasswordForm::NEGATIVE_SIGNAL_SENT;
+- CreateVersion6Pickle(form, &pickle);
++ if (!with_optional_field) {
++ PasswordForm default_values;
++ form.generation_upload_status = default_values.generation_upload_status;
++ }
++ CreateVersion1PlusPickle(form, &pickle, 6, with_optional_field ? 7 : 5);
+
+ ScopedVector<PasswordForm> form_list =
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle);
+@@ -1069,8 +1047,11 @@
+
+ void NativeBackendKWalletPickleTest::CheckVersion5Pickle() {
+ base::Pickle pickle;
++ PasswordForm default_values;
+ PasswordForm form = form_google_;
+- CreateVersion5Pickle(form, &pickle);
++ // Remove the field which was not present in version #5.
++ form.generation_upload_status = default_values.generation_upload_status;
++ CreateVersion1PlusPickle(form, &pickle, 5, 5);
+
+ ScopedVector<PasswordForm> form_list =
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle);
+@@ -1082,13 +1063,15 @@
+
+ void NativeBackendKWalletPickleTest::CheckVersion3Pickle() {
+ base::Pickle pickle;
++ PasswordForm default_values;
+ PasswordForm form = form_google_;
+ // Remove the fields which were not present in version #3.
+- form.display_name.clear();
+- form.avatar_url = GURL();
+- form.federation_url = GURL();
+- form.skip_zero_click = false;
+- CreateVersion3Pickle(form, &pickle);
++ form.display_name = default_values.display_name;
++ form.avatar_url = default_values.avatar_url;
++ form.federation_url = default_values.federation_url;
++ form.skip_zero_click = default_values.skip_zero_click;
++ form.generation_upload_status = default_values.generation_upload_status;
++ CreateVersion1PlusPickle(form, &pickle, 3, 3);
+
+ ScopedVector<PasswordForm> form_list =
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle);
+@@ -1104,7 +1087,7 @@
+ form.times_used = form_google_.times_used;
+ form.type = form_google_.type;
+ form.form_data = form_google_.form_data;
+- CreateVersion2Pickle(form, &pickle);
++ CreateVersion1PlusPickle(form, &pickle, 2, 2);
+
+ ScopedVector<PasswordForm> form_list =
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle);
+@@ -1118,7 +1101,7 @@
+ void NativeBackendKWalletPickleTest::CheckVersion1Pickle() {
+ base::Pickle pickle;
+ PasswordForm form = form_google_;
+- CreateVersion1Pickle(form, &pickle);
++ CreateVersion1PlusPickle(form, &pickle, 1, 1);
+
+ ScopedVector<autofill::PasswordForm> form_list =
+ NativeBackendKWalletStub::DeserializeValue(form.signon_realm, pickle);
+@@ -1206,5 +1189,6 @@
+ }
+
+ TEST_F(NativeBackendKWalletPickleTest, CheckVersion6Pickle) {
+- CheckVersion6Pickle();
++ CheckVersion6Pickle(false);
++ CheckVersion6Pickle(true);
+ }