* [gentoo-commits] repo/gentoo:master commit in: kde-apps/ksmtp/, kde-apps/ksmtp/files/
@ 2017-12-22 13:49 Andreas Sturmlechner
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Sturmlechner @ 2017-12-22 13:49 UTC (permalink / raw
To: gentoo-commits
commit: 4d8f371deba438789b34ca5c0ca8b5f5afa52fe2
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Fri Dec 22 13:41:08 2017 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Fri Dec 22 13:49:10 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4d8f371d
kde-apps/ksmtp: Fix EHLO double auth
See also: https://phabricator.kde.org/D9476
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=388068
Package-Manager: Portage-2.3.13, Repoman-2.3.4
.../ksmtp/files/ksmtp-17.12.0-ehlo-auth-fix.patch | 108 +++++++++++++++++++++
kde-apps/ksmtp/ksmtp-17.12.0-r1.ebuild | 24 +++++
2 files changed, 132 insertions(+)
diff --git a/kde-apps/ksmtp/files/ksmtp-17.12.0-ehlo-auth-fix.patch b/kde-apps/ksmtp/files/ksmtp-17.12.0-ehlo-auth-fix.patch
new file mode 100644
index 00000000000..903bfe0d114
--- /dev/null
+++ b/kde-apps/ksmtp/files/ksmtp-17.12.0-ehlo-auth-fix.patch
@@ -0,0 +1,108 @@
+From 4564d77d3c644a7d1f99749c4e934969b4e21952 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Fri, 22 Dec 2017 14:22:49 +0100
+Subject: [PATCH] Fix duplicate authentication
+
+Summary:
+The response to EHLO triggers an authentication command, but with TLS
+two EHLOs are sent: For the 220 from the server and after TLS negotiation.
+However, sending it twice results in an unexpected "503 already authenticated"
+response which ends up getting parsed by the SendJob, causing confusion.
+
+BUG: 387926
+BUG: 388068
+
+Reviewers: mlaurent, dvratil
+
+Subscribers: rdieter, heikobecker, asn, #kde_pim, lbeltrame, cgiboudeaux
+
+Tags: #kde_pim
+
+Differential Revision: https://phabricator.kde.org/D9476
+---
+ src/session.cpp | 29 +++++++++++++++++++----------
+ src/session_p.h | 1 +
+ src/sessionthread.cpp | 1 -
+ 3 files changed, 20 insertions(+), 11 deletions(-)
+
+diff --git a/src/session.cpp b/src/session.cpp
+index 861419d..4320adc 100644
+--- a/src/session.cpp
++++ b/src/session.cpp
+@@ -80,6 +80,19 @@ void SessionPrivate::setAuthenticationMethods(const QList<QByteArray> &authMetho
+ }
+ }
+
++void SessionPrivate::startHandshake()
++{
++ QByteArray cmd;
++ if (!m_ehloRejected) {
++ cmd = "EHLO ";
++ } else {
++ cmd = "HELO ";
++ }
++ setState(Session::Handshake);
++ const auto hostname = m_customHostname.isEmpty() ? m_thread->hostName() : m_customHostname;
++ sendData(cmd + QUrl::toAce(hostname));
++}
++
+
+
+ Session::Session(const QString &hostName, quint16 port, QObject *parent)
+@@ -277,15 +290,7 @@ void SessionPrivate::responseReceived(const ServerResponse &r)
+
+ if (m_state == Session::Ready) {
+ if (r.isCode(22) || m_ehloRejected) {
+- QByteArray cmd;
+- if (!m_ehloRejected) {
+- cmd = "EHLO ";
+- } else {
+- cmd = "HELO ";
+- }
+- setState(Session::Handshake);
+- const auto hostname = m_customHostname.isEmpty() ? m_thread->hostName() : m_customHostname;
+- sendData(cmd + QUrl::toAce(hostname));
++ startHandshake();
+ return;
+ }
+ }
+@@ -346,7 +351,11 @@ KTcpSocket::SslVersion SessionPrivate::negotiatedEncryption() const
+
+ void SessionPrivate::encryptionNegotiationResult(bool encrypted, KTcpSocket::SslVersion version)
+ {
+- Q_UNUSED(encrypted);
++ if (encrypted) {
++ // Get the updated auth methods
++ startHandshake();
++ }
++
+ m_sslVersion = version;
+ }
+
+diff --git a/src/session_p.h b/src/session_p.h
+index 875f7be..90151f6 100644
+--- a/src/session_p.h
++++ b/src/session_p.h
+@@ -73,6 +73,7 @@ private Q_SLOTS:
+
+ private:
+
++ void startHandshake();
+ void startNext();
+ void startSocketTimer();
+ void stopSocketTimer();
+diff --git a/src/sessionthread.cpp b/src/sessionthread.cpp
+index 1e4db8b..c195826 100644
+--- a/src/sessionthread.cpp
++++ b/src/sessionthread.cpp
+@@ -223,7 +223,6 @@ void SessionThread::sslConnected()
+ } else {
+ qCDebug(KSMTP_LOG) << "TLS negotiation done.";
+
+- QMetaObject::invokeMethod(this, "sendData", Qt::QueuedConnection, Q_ARG(QByteArray, "EHLO " + QUrl::toAce(hostName())));
+ Q_EMIT encryptionNegotiationResult(true, m_socket->negotiatedSslVersion());
+ }
+ }
+--
+2.13.6
+
diff --git a/kde-apps/ksmtp/ksmtp-17.12.0-r1.ebuild b/kde-apps/ksmtp/ksmtp-17.12.0-r1.ebuild
new file mode 100644
index 00000000000..b9a34c04f0e
--- /dev/null
+++ b/kde-apps/ksmtp/ksmtp-17.12.0-r1.ebuild
@@ -0,0 +1,24 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_TEST="true"
+inherit kde5
+
+DESCRIPTION="Job-based library to send email through an SMTP server"
+LICENSE="LGPL-2.1+"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+DEPEND="
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kio)
+ $(add_kdeapps_dep kmime)
+ $(add_qt_dep qtnetwork)
+ dev-libs/cyrus-sasl
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=( "${FILESDIR}/${P}-ehlo-auth-fix.patch" )
^ permalink raw reply related [flat|nested] 2+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: kde-apps/ksmtp/, kde-apps/ksmtp/files/
@ 2017-12-25 10:26 Andreas Sturmlechner
0 siblings, 0 replies; 2+ messages in thread
From: Andreas Sturmlechner @ 2017-12-25 10:26 UTC (permalink / raw
To: gentoo-commits
commit: c634bf219b9940634a17c52c3d4b2a9686178adf
Author: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Sun Dec 24 13:56:44 2017 +0000
Commit: Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Dec 25 09:51:59 2017 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=c634bf21
kde-apps/ksmtp: Send correct hostname
KDE-Bug: https://bugs.kde.org/show_bug.cgi?id=387926
Package-Manager: Portage-2.3.19, Repoman-2.3.6
.../files/ksmtp-17.12.0-correct-hostname.patch | 65 ++++++++++++++++++++++
kde-apps/ksmtp/ksmtp-17.12.0-r2.ebuild | 27 +++++++++
2 files changed, 92 insertions(+)
diff --git a/kde-apps/ksmtp/files/ksmtp-17.12.0-correct-hostname.patch b/kde-apps/ksmtp/files/ksmtp-17.12.0-correct-hostname.patch
new file mode 100644
index 00000000000..8860c59ebfd
--- /dev/null
+++ b/kde-apps/ksmtp/files/ksmtp-17.12.0-correct-hostname.patch
@@ -0,0 +1,65 @@
+From 5199ed07428a03f1aa340da3ae99fcfa62ba2751 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Fri, 22 Dec 2017 22:32:49 +0100
+Subject: Send the correct hostname with the HELO/EHLO command
+
+Summary:
+It sent the server's hostname previously, which some reject.
+
+BUG: 387926
+
+Test Plan: Ran nc as smtp server, uses the right hostname for EHLO now.
+
+Reviewers: mlaurent, dvratil
+
+Subscribers: #kde_pim
+
+Tags: #kde_pim
+
+Differential Revision: https://phabricator.kde.org/D9485
+---
+ src/session.cpp | 14 +++++++++++++-
+ 1 file changed, 13 insertions(+), 1 deletion(-)
+
+diff --git a/src/session.cpp b/src/session.cpp
+index 4320adc..0be26a9 100644
+--- a/src/session.cpp
++++ b/src/session.cpp
+@@ -27,6 +27,7 @@
+ #include "ksmtp_debug.h"
+
+ #include <QHostAddress>
++#include <QHostInfo>
+ #include <QUrl>
+ #include <QEventLoop>
+ #include <QPointer>
+@@ -82,6 +83,18 @@ void SessionPrivate::setAuthenticationMethods(const QList<QByteArray> &authMetho
+
+ void SessionPrivate::startHandshake()
+ {
++ QString hostname = m_customHostname;
++
++ if (hostname.isEmpty()) {
++ // FIXME: QHostInfo::fromName can get a FQDN, but does a DNS lookup
++ hostname = QHostInfo::localHostName();
++ if (hostname.isEmpty()) {
++ hostname = QStringLiteral("localhost.invalid");
++ } else if (!hostname.contains(QLatin1Char('.'))) {
++ hostname += QStringLiteral(".localnet");
++ }
++ }
++
+ QByteArray cmd;
+ if (!m_ehloRejected) {
+ cmd = "EHLO ";
+@@ -89,7 +102,6 @@ void SessionPrivate::startHandshake()
+ cmd = "HELO ";
+ }
+ setState(Session::Handshake);
+- const auto hostname = m_customHostname.isEmpty() ? m_thread->hostName() : m_customHostname;
+ sendData(cmd + QUrl::toAce(hostname));
+ }
+
+--
+cgit v0.11.2
+
diff --git a/kde-apps/ksmtp/ksmtp-17.12.0-r2.ebuild b/kde-apps/ksmtp/ksmtp-17.12.0-r2.ebuild
new file mode 100644
index 00000000000..42d615782b2
--- /dev/null
+++ b/kde-apps/ksmtp/ksmtp-17.12.0-r2.ebuild
@@ -0,0 +1,27 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+KDE_TEST="true"
+inherit kde5
+
+DESCRIPTION="Job-based library to send email through an SMTP server"
+LICENSE="LGPL-2.1+"
+KEYWORDS="~amd64 ~x86"
+IUSE=""
+
+DEPEND="
+ $(add_frameworks_dep kcoreaddons)
+ $(add_frameworks_dep ki18n)
+ $(add_frameworks_dep kio)
+ $(add_kdeapps_dep kmime)
+ $(add_qt_dep qtnetwork)
+ dev-libs/cyrus-sasl
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+ "${FILESDIR}/${P}-ehlo-auth-fix.patch"
+ "${FILESDIR}/${P}-correct-hostname.patch"
+)
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-12-25 10:26 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-22 13:49 [gentoo-commits] repo/gentoo:master commit in: kde-apps/ksmtp/, kde-apps/ksmtp/files/ Andreas Sturmlechner
-- strict thread matches above, loose matches on Subject: below --
2017-12-25 10:26 Andreas Sturmlechner
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox