aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-23 15:43:05 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-23 15:43:05 +0000
commit1600b5dee7aa289fa9f64a5669a0502d4b1ada0e (patch)
treeed99f1fcbbebaf1e6234ad435e341597f38fdb6f /src
parentbb70b6c629e2d422f4bd648cf4b251456a15a643 (diff)
downloadqxmpp-1600b5dee7aa289fa9f64a5669a0502d4b1ada0e.tar.gz
fix security check on incoming XMPP stanzas
Diffstat (limited to 'src')
-rw-r--r--src/QXmppIncomingServer.cpp5
-rw-r--r--src/QXmppServer.cpp5
-rw-r--r--src/QXmppUtils.cpp5
-rw-r--r--src/QXmppUtils.h1
4 files changed, 10 insertions, 6 deletions
diff --git a/src/QXmppIncomingServer.cpp b/src/QXmppIncomingServer.cpp
index ea8702e3..5ebaa6ac 100644
--- a/src/QXmppIncomingServer.cpp
+++ b/src/QXmppIncomingServer.cpp
@@ -143,7 +143,10 @@ void QXmppIncomingServer::handleStanza(const QDomElement &stanza)
emit dialbackRequestReceived(request);
}
- } else if (!d->authenticated.isEmpty() && stanza.attribute("from").split("@").last() == d->authenticated) {
+ }
+ else if (!d->authenticated.isEmpty() &&
+ jidToDomain(stanza.attribute("from")) == d->authenticated)
+ {
// relay packets if the remote party is authenticated
bool handled = false;
emit elementReceived(stanza, handled);
diff --git a/src/QXmppServer.cpp b/src/QXmppServer.cpp
index 54dcb9bc..74257681 100644
--- a/src/QXmppServer.cpp
+++ b/src/QXmppServer.cpp
@@ -33,11 +33,6 @@
#include "QXmppServer.h"
#include "QXmppUtils.h"
-static QString jidToDomain(const QString &to)
-{
- return jidToBareJid(to).split("@").last();
-}
-
class QXmppServerPrivate
{
public:
diff --git a/src/QXmppUtils.cpp b/src/QXmppUtils.cpp
index 33754692..68d88d89 100644
--- a/src/QXmppUtils.cpp
+++ b/src/QXmppUtils.cpp
@@ -146,6 +146,11 @@ QString datetimeToString(const QDateTime &dt)
return utc.toString("yyyy-MM-ddThh:mm:ssZ");
}
+QString jidToDomain(const QString &jid)
+{
+ return jidToBareJid(jid).split("@").last();
+}
+
QString jidToResource(const QString& jid)
{
const int pos = jid.indexOf(QChar('/'));
diff --git a/src/QXmppUtils.h b/src/QXmppUtils.h
index 3b3326b9..eed2bb7a 100644
--- a/src/QXmppUtils.h
+++ b/src/QXmppUtils.h
@@ -44,6 +44,7 @@ class QStringList;
QDateTime datetimeFromString(const QString &str);
QString datetimeToString(const QDateTime &dt);
+QString jidToDomain(const QString& jid);
QString jidToResource(const QString& jid);
QString jidToBareJid(const QString& jid);