svn commit: r518779 - in head/deskutils/nextcloudclient: . files
Michael Reifenberger
mr at FreeBSD.org
Sun Dec 1 15:47:03 UTC 2019
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 at 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 at 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;
+ };
+ }
More information about the svn-ports-head
mailing list