Date: Sun, 1 Dec 2019 15:47:02 +0000 (UTC) From: Michael Reifenberger <mr@FreeBSD.org> To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r518779 - in head/deskutils/nextcloudclient: . files Message-ID: <201912011547.xB1Fl2Jk044609@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: mr Date: Sun Dec 1 15:47:01 2019 New Revision: 518779 URL: https://svnweb.freebsd.org/changeset/ports/518779 Log: Add patch to fix problem with keyring rewriting. PR: 241823 Submitted by: Guido Falsi Added: head/deskutils/nextcloudclient/files/patch-fix_remote_wipe_keychain_storage (contents, props changed) Modified: head/deskutils/nextcloudclient/Makefile Modified: head/deskutils/nextcloudclient/Makefile ============================================================================== --- head/deskutils/nextcloudclient/Makefile Sun Dec 1 14:10:12 2019 (r518778) +++ head/deskutils/nextcloudclient/Makefile Sun Dec 1 15:47:01 2019 (r518779) @@ -3,6 +3,7 @@ PORTNAME= nextcloudclient PORTVERSION= 2.6.1 +PORTREVISION= 1 DISTVERSIONPREFIX= v CATEGORIES= deskutils Added: head/deskutils/nextcloudclient/files/patch-fix_remote_wipe_keychain_storage ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/deskutils/nextcloudclient/files/patch-fix_remote_wipe_keychain_storage Sun Dec 1 15:47:01 2019 (r518779) @@ -0,0 +1,85 @@ +From dcc84d35085d790a53b472d1edba663832af238a Mon Sep 17 00:00:00 2001 +From: Michael Schuster <michael@schuster.ms> +Date: Fri, 29 Nov 2019 04:28:50 +0100 +Subject: [PATCH] Fix remote wipe keychain storage (issue #1592) + +The app password for the remote wipe was constantly being written in +WebFlowCredentials::slotFinished to the keychain, leading to unnecessary +write and log overhead on the system. + +This fix introduces a check to only store the app password once in +a lifetime of the Account class. Also the method used to store the +password will be renamed from setAppPassword to writeAppPasswordOnce +to be more expressive. + +Signed-off-by: Michael Schuster <michael@schuster.ms> +--- + src/gui/creds/webflowcredentials.cpp | 2 +- + src/libsync/account.cpp | 9 +++++++-- + src/libsync/account.h | 5 ++++- + 3 files changed, 12 insertions(+), 4 deletions(-) + +diff --git a/src/gui/creds/webflowcredentials.cpp b/src/gui/creds/webflowcredentials.cpp +index 49c80e1ff..e2dc10b35 100644 +--- src/gui/creds/webflowcredentials.cpp ++++ src/gui/creds/webflowcredentials.cpp +@@ -420,7 +420,7 @@ void WebFlowCredentials::slotFinished(QNetworkReply *reply) { + _credentialsValid = true; + + /// Used later for remote wipe +- _account->setAppPassword(_password); ++ _account->writeAppPasswordOnce(_password); + } + } + +diff --git a/src/libsync/account.cpp b/src/libsync/account.cpp +index 32e58b2e4..33032e3f8 100644 +--- src/libsync/account.cpp ++++ src/libsync/account.cpp +@@ -513,7 +513,10 @@ void Account::setNonShib(bool nonShib) + } + } + +-void Account::setAppPassword(QString appPassword){ ++void Account::writeAppPasswordOnce(QString appPassword){ ++ if(_wroteAppPassword) ++ return; ++ + const QString kck = AbstractCredentials::keychainKey( + url().toString(), + davUser() + app_password, +@@ -524,8 +527,10 @@ void Account::setAppPassword(QString appPassword){ + job->setInsecureFallback(false); + job->setKey(kck); + job->setBinaryData(appPassword.toLatin1()); +- connect(job, &WritePasswordJob::finished, [](Job *) { ++ connect(job, &WritePasswordJob::finished, [this](Job *) { + qCInfo(lcAccount) << "appPassword stored in keychain"; ++ ++ _wroteAppPassword = true; + }); + job->start(); + } +diff --git a/src/libsync/account.h b/src/libsync/account.h +index 1f3e46a96..2b843dca9 100644 +--- src/libsync/account.h ++++ src/libsync/account.h +@@ -243,7 +243,7 @@ class OWNCLOUDSYNC_EXPORT Account : public QObject + + /// Used in RemoteWipe + void retrieveAppPassword(); +- void setAppPassword(QString appPassword); ++ void writeAppPasswordOnce(QString appPassword); + void deleteAppPassword(); + + public slots: +@@ -319,6 +319,9 @@ protected Q_SLOTS: + QString _davPath; // defaults to value from theme, might be overwritten in brandings + ClientSideEncryption _e2e; + ++ /// Used in RemoteWipe ++ bool _wroteAppPassword = false; ++ + friend class AccountManager; + }; + }
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201912011547.xB1Fl2Jk044609>