summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorShane Kearns <shane.kearns@accenture.com>2011-12-09 12:06:04 (GMT)
committerShane Kearns <shane.kearns@accenture.com>2011-12-12 14:26:42 (GMT)
commit43d4faf686da7d553171d7c8894c2825b4572dd6 (patch)
treef16dd16774c3e3dafe5a5a49fcd9892cd0d74048 /src/network
parent214ba9e83a99bdd750510d83e1743b7ce62d9a2b (diff)
downloadQt-43d4faf686da7d553171d7c8894c2825b4572dd6.zip
Qt-43d4faf686da7d553171d7c8894c2825b4572dd6.tar.gz
Qt-43d4faf686da7d553171d7c8894c2825b4572dd6.tar.bz2
Fix NTLM authentication with email address
When using "user@dns-domain" for NTLM authentication, the whole string should be sent as the username, and the domain should be set to an empty string. The domain sent by the server is still reflected if the username does not contain an '@' character. Manually tested using MS IIS on a domain-joined PC. Task-number: QTBUG-19894 Task-number: ou1cimx1#949951 Change-Id: Ie1f81172e71cb7cce7b8c909062be990c24aea47 Reviewed-by: Martin Petersson <Martin.Petersson@nokia.com> (cherry picked from commit f74ff46c7a333d771b07d8ff38df10d9fd13bbcf)
Diffstat (limited to 'src/network')
-rw-r--r--src/network/kernel/qauthenticator.cpp11
1 files changed, 3 insertions, 8 deletions
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 0423e22..7b63567 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -220,12 +220,6 @@ void QAuthenticator::setUser(const QString &user)
d->userDomain = user.left(separatorPosn);
d->extractedUser = user.mid(separatorPosn + 1);
d->user = user;
- } else if((separatorPosn = user.indexOf(QLatin1String("@"))) != -1) {
- //domain name is present
- d->realm.clear();
- d->userDomain = user.mid(separatorPosn + 1);
- d->extractedUser = user.left(separatorPosn);
- d->user = user;
} else {
d->extractedUser = user;
d->user = user;
@@ -1381,8 +1375,9 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
int offset = QNtlmPhase3BlockBase::Size;
Q_ASSERT(QNtlmPhase3BlockBase::Size == sizeof(QNtlmPhase3BlockBase));
-
- if(ctx->userDomain.isEmpty()) {
+
+ // for kerberos style user@domain logins, NTLM domain string should be left empty
+ if (ctx->userDomain.isEmpty() && !ctx->extractedUser.contains(QLatin1Char('@'))) {
offset = qEncodeNtlmString(pb.domain, offset, ch.targetNameStr, unicode);
pb.domainStr = ch.targetNameStr;
} else {