| Index: chrome/browser/password_manager/native_backend_libsecret.cc
|
| diff --git a/chrome/browser/password_manager/native_backend_libsecret.cc b/chrome/browser/password_manager/native_backend_libsecret.cc
|
| index 7cc94af040e41ea046b524cb3a4758dfdc7e0aff..ca9905dab95e1b41a98f21beee4f1f9e1cc24f88 100644
|
| --- a/chrome/browser/password_manager/native_backend_libsecret.cc
|
| +++ b/chrome/browser/password_manager/native_backend_libsecret.cc
|
| @@ -21,6 +21,7 @@ using base::UTF16ToUTF8;
|
|
|
| namespace {
|
| const char kEmptyString[] = "";
|
| +const int kMaxPossibleTimeTValue = std::numeric_limits<int>::max();
|
| }
|
|
|
| typeof(&::secret_password_store_sync)
|
| @@ -164,7 +165,12 @@ scoped_ptr<PasswordForm> FormOutOfAttributes(GHashTable* attrs) {
|
| bool date_ok = base::StringToInt64(
|
| GetStringFromAttributes(attrs, "date_created"), &date_created);
|
| DCHECK(date_ok);
|
| - form->date_created = base::Time::FromTimeT(date_created);
|
| + // In past date_created was stored as time_t. We can distinguish between
|
| + // them by taking into consideration that INT_MAX correspond to
|
| + // 2038 year in time_t and internal values of base::Time are much bigger.
|
| + form->date_created = date_created < kMaxPossibleTimeTValue
|
| + ? base::Time::FromTimeT(date_created)
|
| + : base::Time::FromInternalValue(date_created);
|
| form->blacklisted_by_user =
|
| GetUintFromAttributes(attrs, "blacklisted_by_user");
|
| form->type =
|
| @@ -397,11 +403,11 @@ void NativeBackendLibsecret::AddUpdateLoginSearch(
|
| }
|
|
|
| bool NativeBackendLibsecret::RawAddLogin(const PasswordForm& form) {
|
| - time_t date_created = form.date_created.ToTimeT();
|
| + int64 date_created = form.date_created.ToInternalValue();
|
| // If we are asked to save a password with 0 date, use the current time.
|
| - // We don't want to actually save passwords as though on January 1, 1970.
|
| + // We don't want to actually save passwords as though on January 1, 1601.
|
| if (!date_created)
|
| - date_created = time(nullptr);
|
| + date_created = base::Time::Now().ToInternalValue();
|
| int64 date_synced = form.date_synced.ToInternalValue();
|
| GError* error = nullptr;
|
| secret_password_store_sync(
|
|
|