aboutsummaryrefslogtreecommitdiff
path: root/src/QXmppStream.cpp
diff options
context:
space:
mode:
authorJeremy Lainé <jeremy.laine@m4x.org>2010-08-20 12:34:50 +0000
committerJeremy Lainé <jeremy.laine@m4x.org>2010-08-20 12:34:50 +0000
commitd5b9ca273924e220a6b5a9c78e7fddfe9400ac53 (patch)
treec374b6f2e0cc034cf29b5213ffaa36d56a27336c /src/QXmppStream.cpp
parent5008f4e433c305f63b6b6dbd4d8545ab4cb9d4b4 (diff)
downloadqxmpp-d5b9ca273924e220a6b5a9c78e7fddfe9400ac53.tar.gz
replace Digest MD5 parsing code, the current code chokes on non-quoted parameters
Diffstat (limited to 'src/QXmppStream.cpp')
-rw-r--r--src/QXmppStream.cpp42
1 files changed, 1 insertions, 41 deletions
diff --git a/src/QXmppStream.cpp b/src/QXmppStream.cpp
index b17a314d..033e404e 100644
--- a/src/QXmppStream.cpp
+++ b/src/QXmppStream.cpp
@@ -828,47 +828,7 @@ void QXmppStream::sendAuthDigestMD5ResponseStep1(const QString& challenge)
{
QByteArray ba = QByteArray::fromBase64(challenge.toUtf8());
- QMap<QByteArray, QByteArray> map;
-
- QByteArray key;
- QByteArray value;
- bool parsingValue = false;
- int startindex = 0;
- for(int i = 0; i < ba.length(); i++)
- {
- char next = ba.at(i);
- switch (next) {
- case '=':
- if (!parsingValue)
- {
- // Trim the key, but do not trim the value as it is in delimiters
- key = ba.mid(startindex, i - startindex).trimmed();
- // Skip the equals and delimiter
- startindex = i + 2;
- }
- break;
- case '"':
- // Ignore the opening delimiter
- if (startindex != (i + 1))
- {
- value = ba.mid(startindex, i - startindex);
- map[key] = value;
- debug(key + ":" + value);
- // Skip the comma
- i += 2;
- startindex = i;
- parsingValue = false;
- }
- else {
- parsingValue = true;
- }
-
- break;
-
- default:
- break;
- }
- }
+ QMap<QByteArray, QByteArray> map = parseDigestMd5(ba);
if (!map.contains("nonce"))
{