From 6c111246ec0a17309e4d6af4c57d6fcc058671cb Mon Sep 17 00:00:00 2001 From: Linus Jahn Date: Mon, 4 Apr 2022 18:09:03 +0200 Subject: Client: Don't pass encrypted stanzas to old managers Old managers means managers only using the old handleStanza() overload. Such managers are likely not handling the encrypted contents correctly (e.g. sending unencrypted replies and thereby leaking information). --- src/client/QXmppClient.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/client/QXmppClient.cpp') diff --git a/src/client/QXmppClient.cpp b/src/client/QXmppClient.cpp index b1c60233..b371e052 100644 --- a/src/client/QXmppClient.cpp +++ b/src/client/QXmppClient.cpp @@ -111,8 +111,13 @@ namespace QXmpp::Private::StanzaPipeline { bool process(const QList &extensions, const QDomElement &element, const std::optional &e2eeMetadata) { + const bool unencrypted = !e2eeMetadata.has_value(); for (auto *extension : extensions) { - if (extension->handleStanza(element, e2eeMetadata) || extension->handleStanza(element)) { + // e2e encrypted stanzas are not passed to the old handleStanza() overload, because such + // managers are likely not handling the encrypted contents correctly (e.g. sending + // unencrypted replies and thereby leaking information). + if (extension->handleStanza(element, e2eeMetadata) || + (unencrypted && extension->handleStanza(element))) { return true; } } -- cgit v1.2.3