diff options
Diffstat (limited to 'src/client/QXmppClient.cpp')
| -rw-r--r-- | src/client/QXmppClient.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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<QXmppClientExtension *> &extensions, const QDomElement &element, const std::optional<QXmppE2eeMetadata> &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; } } |
