Accepting request 540893 from KDE:Applications

KDE Applications 17.08.3

OBS-URL: https://build.opensuse.org/request/show/540893
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/kio-extras5?expand=0&rev=50
This commit is contained in:
Dominique Leuenberger 2017-11-16 13:24:43 +00:00 committed by Git OBS Bridge
commit 014c8d6aa0
5 changed files with 16 additions and 125 deletions

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d6fc25a3f83750ca2af27768a7278314139bda8591df70b8f49b3d11379a74dd
size 555728

View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:4c268b22a50d7ed08dbb7211a34e562aa10c2cbb2c62fb4311a0f932c841013f
size 556316

View File

@ -1,3 +1,15 @@
-------------------------------------------------------------------
Thu Nov 09 23:11:48 CET 2017 - lbeltrame@kde.org
- Update to 17.08.3
* New bugfix release
* For more details please see:
* https://www.kde.org/announcements/announce-applications-17.08.3.php
- Changes since 17.08.2:
* Workaround incorrectly returned EEXIST instead of EPERM regression introduced by libsmbclient 4.7 (kde#385708)
* Fix smb:/ handling
- Drop workaround-bug-in-libsmbclient-4.7.patch (merged upstream)
-------------------------------------------------------------------
Wed Nov 1 12:36:03 UTC 2017 - wbauer@tmo.at

View File

@ -19,7 +19,7 @@
%bcond_without lang
Name: kio-extras5
Version: 17.08.2
Version: 17.08.3
Release: 0
%define kf5_version 5.26.0
# Latest stable Applications (e.g. 17.08 in KA, but 17.11.80 in KUA)
@ -31,8 +31,6 @@ Url: http://www.kde.org
Source: kio-extras-%{version}.tar.xz
Source99: %{name}-rpmlintrc
Patch0: fix-mtp-paste-with-KF5-5.25.diff
# PATCH-FIX-UPSTREAM
Patch1: workaround-bug-in-libsmbclient-4.7.patch
BuildRequires: OpenEXR-devel
BuildRequires: flac-devel
BuildRequires: gperf
@ -110,7 +108,6 @@ This is the development package for libkioarchive
%prep
%setup -q -n kio-extras-%{version}
%patch0 -p1
%patch1 -p1
sed -i '/^add_subdirectory( doc )/d' CMakeLists.txt
%build

View File

@ -1,118 +0,0 @@
From a36b797913a844dbb26d5dc1542b3ce304f5f445 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michal=20Mal=C3=BD?= <malymi@natur.cuni.cz>
Date: Tue, 31 Oct 2017 18:19:21 -0600
Subject: Workaround incorrectly returned EEXIST instead of EPERM regression
introduced by libsmbclient 4.7
Summary:
There appears to be an issue with libsmbclient 4.7 that returns nonsensical EEXIST error code when a user has not authenticated themselves to access password-protected shares. This patch attempts to work around the issue by treating EEXIST as another case of "invalid login credentials". The workaround tries to detect broken versions of libsmbclient and enables itself only when such a version is found.
See https://bugzilla.samba.org/show_bug.cgi?id=13050 for upstream bug report.
BUG: 385708
Reviewers: ngraham, davidedmundson, elvisangelaccio, #frameworks
Reviewed By: ngraham, davidedmundson
Subscribers: cfeck, rdieter, graesslin, z3ntu
Differential Revision: https://phabricator.kde.org/D8387
---
smb/kio_smb.cpp | 30 +++++++++++++++++++++++++++++-
smb/kio_smb.h | 3 +++
smb/kio_smb_browse.cpp | 7 ++++++-
3 files changed, 38 insertions(+), 2 deletions(-)
diff --git a/smb/kio_smb.cpp b/smb/kio_smb.cpp
index 2a2e424..1ea3f99 100644
--- a/smb/kio_smb.cpp
+++ b/smb/kio_smb.cpp
@@ -31,12 +31,40 @@
#include "kio_smb.h"
#include "kio_smb_internal.h"
#include <QCoreApplication>
+#include <QVersionNumber>
Q_LOGGING_CATEGORY(KIO_SMB, "kio_smb")
+bool needsEEXISTWorkaround()
+{
+ /* There is an issue with some libsmbclient versions that return EEXIST
+ * return code from smbc_opendir() instead of EPERM when the user
+ * tries to access a resource that requires login authetification.
+ * We are working around the issue by treating EEXIST as a special case
+ * of "invalid/unavailable credentials" if we detect that we are using
+ * the affected versions of libsmbclient
+ *
+ * Upstream bug report: https://bugzilla.samba.org/show_bug.cgi?id=13050
+ */
+ static const QVersionNumber firstBrokenVer{4, 7, 0};
+ static const QVersionNumber lastBrokenVer{9, 9, 9}; /* Adjust accordingly when this gets fixed upstream */
+
+ const QVersionNumber currentVer = QVersionNumber::fromString(smbc_version());
+ qCDebug(KIO_SMB) << "Using libsmbclient library version" << currentVer;
+
+ if (currentVer >= firstBrokenVer && currentVer <= lastBrokenVer) {
+ qCDebug(KIO_SMB) << "Detected broken libsmbclient version" << currentVer;
+ return true;
+ }
+
+ return false;
+}
+
//===========================================================================
SMBSlave::SMBSlave(const QByteArray& pool, const QByteArray& app)
- : SlaveBase( "smb", pool, app ), m_openFd(-1)
+ : SlaveBase( "smb", pool, app ),
+ m_openFd(-1),
+ m_enableEEXISTWorkaround(needsEEXISTWorkaround())
{
m_initialized_smbc = false;
diff --git a/smb/kio_smb.h b/smb/kio_smb.h
index 77866b1..22fa036 100644
--- a/smb/kio_smb.h
+++ b/smb/kio_smb.h
@@ -278,6 +278,7 @@ private:
void smbCopy(const QUrl& src, const QUrl &dest, int permissions, KIO::JobFlags flags);
void smbCopyGet(const QUrl& src, const QUrl& dest, int permissions, KIO::JobFlags flags);
void smbCopyPut(const QUrl& src, const QUrl& dest, int permissions, KIO::JobFlags flags);
+ bool workaroundEEXIST(const int errNum) const;
void fileSystemFreeSpace(const QUrl &url);
@@ -288,6 +289,8 @@ private:
*/
int m_openFd;
SMBUrl m_openUrl;
+
+ const bool m_enableEEXISTWorkaround; /* Enables a workaround for some broken libsmbclient versions */
};
//==========================================================================
diff --git a/smb/kio_smb_browse.cpp b/smb/kio_smb_browse.cpp
index 5995eec..47b2b32 100644
--- a/smb/kio_smb_browse.cpp
+++ b/smb/kio_smb_browse.cpp
@@ -473,7 +473,7 @@ void SMBSlave::listDir( const QUrl& kurl )
}
else
{
- if (errNum == EPERM || errNum == EACCES) {
+ if (errNum == EPERM || errNum == EACCES || workaroundEEXIST(errNum)) {
if (checkPassword(m_current_url)) {
redirection( m_current_url );
finished();
@@ -522,3 +522,8 @@ void SMBSlave::fileSystemFreeSpace(const QUrl& url)
finished();
}
+bool SMBSlave::workaroundEEXIST(const int errNum) const
+{
+ return (errNum == EEXIST) && m_enableEEXISTWorkaround;
+}
+
--
cgit v0.11.2