diff options
| author | Linus Jahn <lnj@kaidan.im> | 2022-04-04 18:09:03 +0200 |
|---|---|---|
| committer | Linus Jahn <lnj@kaidan.im> | 2022-05-20 16:55:28 +0200 |
| commit | 6c111246ec0a17309e4d6af4c57d6fcc058671cb (patch) | |
| tree | d571b73393377831719d3119e47b274cb24cbb5a /src/client/QXmppClient.cpp | |
| parent | 7b0d7e727052119d40854b621f7da775ac2fea4c (diff) | |
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).
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; } } |
