From 1e9b37bccb8df47129bd83d543b8ee77d324b63d Mon Sep 17 00:00:00 2001 From: Juraj Oravec Date: Mon, 13 Nov 2023 22:02:14 +0100 Subject: [PATCH] GnomeKeyring: Port to Qt6 Limit the timestamp to 32 bits. Signed-off-by: Juraj Oravec --- CMakeLists.txt | 2 +- .../gnomekeyringpasswordbackend.cpp | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0daf08f4..55f3f8821 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,7 @@ endif() # Optional: GnomeKeyring find_package(PkgConfig) if (PKG_CONFIG_FOUND) - option(BUILD_KEYRING "Gnome keyring password plugin" OFF) + option(BUILD_KEYRING "Gnome keyring password plugin" ON) if (BUILD_KEYRING) pkg_check_modules(GNOME_KEYRING IMPORTED_TARGET gnome-keyring-1 ) endif() diff --git a/src/plugins/GnomeKeyringPasswords/gnomekeyringpasswordbackend.cpp b/src/plugins/GnomeKeyringPasswords/gnomekeyringpasswordbackend.cpp index e027b319a..8f7b2fa92 100644 --- a/src/plugins/GnomeKeyringPasswords/gnomekeyringpasswordbackend.cpp +++ b/src/plugins/GnomeKeyringPasswords/gnomekeyringpasswordbackend.cpp @@ -24,6 +24,17 @@ extern "C" { #include "gnome-keyring.h" } +// TODO QT6 - should we just start storing timestamps as 64-bit instead? +static uint Q_DATETIME_TOTIME_T(const QDateTime &dateTime) +{ + if (!dateTime.isValid()) + return uint(-1); + qint64 retval = dateTime.toMSecsSinceEpoch() / 1000; + if (quint64(retval) >= Q_UINT64_C(0xFFFFFFFF)) + return uint(-1); + return uint(retval); +} + static PasswordEntry createEntry(GnomeKeyringFound* item) { PasswordEntry entry; @@ -141,7 +152,7 @@ void GnomeKeyringPasswordBackend::addEntry(const PasswordEntry &entry) initialize(); PasswordEntry stored = entry; - stored.updated = QDateTime::currentDateTime().toTime_t(); + stored.updated = Q_DATETIME_TOTIME_T(QDateTime::currentDateTime()); storeEntry(stored); @@ -201,7 +212,7 @@ void GnomeKeyringPasswordBackend::updateLastUsed(PasswordEntry &entry) { initialize(); - entry.updated = QDateTime::currentDateTime().toTime_t(); + entry.updated = Q_DATETIME_TOTIME_T(QDateTime::currentDateTime()); GnomeKeyringAttributeList* attributes = createAttributes(entry);