git: d49ea24d98b0 - main - deskutils/kdeconnect-kde: backport upstream patch:
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 17 Nov 2025 17:06:37 UTC
The branch main has been updated by makc:
URL: https://cgit.FreeBSD.org/ports/commit/?id=d49ea24d98b0a267090aa96d45de0b59799120c2
commit d49ea24d98b0a267090aa96d45de0b59799120c2
Author: Max Brazhnikov <makc@FreeBSD.org>
AuthorDate: 2025-11-17 16:58:31 +0000
Commit: Max Brazhnikov <makc@FreeBSD.org>
CommitDate: 2025-11-17 17:02:52 +0000
deskutils/kdeconnect-kde: backport upstream patch:
Check that the device ID doesn't change during the handshake.
---
deskutils/kdeconnect-kde/Makefile | 1 +
.../patch-core_backends_lan_lanlinkprovider.cpp | 45 ++++++++++++++--------
2 files changed, 30 insertions(+), 16 deletions(-)
diff --git a/deskutils/kdeconnect-kde/Makefile b/deskutils/kdeconnect-kde/Makefile
index d3083ca92e82..748e8a9e4720 100644
--- a/deskutils/kdeconnect-kde/Makefile
+++ b/deskutils/kdeconnect-kde/Makefile
@@ -1,5 +1,6 @@
PORTNAME= kdeconnect-kde
DISTVERSION= ${KDE_APPLICATIONS_VERSION}
+PORTREVISION= 1
CATEGORIES= deskutils kde kde-applications
MAINTAINER= kde@FreeBSD.org
diff --git a/deskutils/kdeconnect-kde/files/patch-core_backends_lan_lanlinkprovider.cpp b/deskutils/kdeconnect-kde/files/patch-core_backends_lan_lanlinkprovider.cpp
index 47e10fb8326f..9fb5f425bff6 100644
--- a/deskutils/kdeconnect-kde/files/patch-core_backends_lan_lanlinkprovider.cpp
+++ b/deskutils/kdeconnect-kde/files/patch-core_backends_lan_lanlinkprovider.cpp
@@ -1,19 +1,32 @@
---- core/backends/lan/lanlinkprovider.cpp.orig 2023-12-18 22:14:59 UTC
+--- core/backends/lan/lanlinkprovider.cpp.orig 2025-11-01 18:19:03 UTC
+++ core/backends/lan/lanlinkprovider.cpp
-@@ -291,6 +291,16 @@ void LanLinkProvider::udpBroadcastReceived()
- m_lastConnectionTime[deviceId] = now;
+@@ -427,6 +427,7 @@ void LanLinkProvider::encrypted()
- int tcpPort = receivedPacket->get<int>(QStringLiteral("tcpPort"));
-+ // convert IPv6 addresses of type "v4-mapped" to IPv4
-+ QHostAddress addr = sender;
-+ if (addr.protocol() == QAbstractSocket::IPv6Protocol) {
-+ bool success;
-+ QHostAddress convertedAddr = QHostAddress(addr.toIPv4Address(&success));
-+ if (success) {
-+ // qCDebug(KDECONNECT_CORE) << "Converting IPv6" << addr << "to IPv4" << convertedAddr;
-+ sender = convertedAddr;
+ NetworkPacket *identityPacket = m_receivedIdentityPackets[socket].np;
+
++ QString deviceId = identityPacket->get<QString>(QStringLiteral("deviceId"));
+ int protocolVersion = identityPacket->get<int>(QStringLiteral("protocolVersion"), -1);
+ if (protocolVersion >= 8) {
+ disconnect(socket, &QObject::destroyed, nullptr, nullptr);
+@@ -435,7 +436,7 @@ void LanLinkProvider::encrypted()
+ NetworkPacket myIdentity = KdeConnectConfig::instance().deviceInfo().toIdentityPacket();
+ socket->write(myIdentity.serialize());
+ socket->flush();
+- connect(socket, &QIODevice::readyRead, this, [this, socket, protocolVersion]() {
++ connect(socket, &QIODevice::readyRead, this, [this, socket, protocolVersion, deviceId]() {
+ if (!socket->canReadLine()) {
+ // This can happen if the packet is large enough to be split in two chunks
+ return;
+@@ -452,6 +453,12 @@ void LanLinkProvider::encrypted()
+ int newProtocolVersion = secureIdentityPacket->get<int>(QStringLiteral("protocolVersion"), 0);
+ if (newProtocolVersion != protocolVersion) {
+ qCWarning(KDECONNECT_CORE) << "Protocol version changed half-way through the handshake:" << protocolVersion << "->" << newProtocolVersion;
++ return;
+ }
-+ }
- if (tcpPort < MIN_TCP_PORT || tcpPort > MAX_TCP_PORT) {
- qCDebug(KDECONNECT_CORE) << "TCP port outside of kdeconnect's range";
- delete receivedPacket;
++ QString newDeviceId = secureIdentityPacket->get<QString>(QStringLiteral("deviceId"));
++ if (newDeviceId != deviceId) {
++ qCWarning(KDECONNECT_CORE) << "Device ID changed half-way through the handshake:" << deviceId << "->" << newDeviceId;
++ return;
+ }
+ DeviceInfo deviceInfo = DeviceInfo::FromIdentityPacketAndCert(*secureIdentityPacket, socket->peerCertificate());
+