Merge the block and blockbase classes in qauthenticator.cpp
The inheritance is probably unnecessary. As a drive-by, initialize all the members to silence the original Axivion warning. Task-number: QTBUG-127539 Change-Id: Iba9d8f2cba246616dbb6e8e9b7b21e8589af84d9 Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io> (cherry picked from commit de3dd3878c2305be81d539e768788e2713c81423) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
91730ecf3b
commit
3758321282
@ -1013,45 +1013,6 @@ public:
|
||||
enum { Size = 8 };
|
||||
};
|
||||
|
||||
class QNtlmPhase1BlockBase
|
||||
{
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
quint32 flags;
|
||||
QNtlmBuffer domain;
|
||||
QNtlmBuffer workstation;
|
||||
enum { Size = 32 };
|
||||
};
|
||||
|
||||
// ################# check paddings
|
||||
class QNtlmPhase2BlockBase
|
||||
{
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
QNtlmBuffer targetName;
|
||||
quint32 flags;
|
||||
unsigned char challenge[8];
|
||||
quint32 context[2];
|
||||
QNtlmBuffer targetInfo;
|
||||
enum { Size = 48 };
|
||||
};
|
||||
|
||||
class QNtlmPhase3BlockBase {
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
QNtlmBuffer lmResponse;
|
||||
QNtlmBuffer ntlmResponse;
|
||||
QNtlmBuffer domain;
|
||||
QNtlmBuffer user;
|
||||
QNtlmBuffer workstation;
|
||||
QNtlmBuffer sessionKey;
|
||||
quint32 flags;
|
||||
enum { Size = 64 };
|
||||
};
|
||||
|
||||
static void qStreamNtlmBuffer(QDataStream& ds, const QByteArray& s)
|
||||
{
|
||||
ds.writeRawData(s.constData(), s.size());
|
||||
@ -1104,9 +1065,15 @@ static QDataStream& operator>>(QDataStream& s, QNtlmBuffer& b)
|
||||
}
|
||||
|
||||
|
||||
class QNtlmPhase1Block : public QNtlmPhase1BlockBase
|
||||
class QNtlmPhase1Block
|
||||
{ // request
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
quint32 flags;
|
||||
QNtlmBuffer domain;
|
||||
QNtlmBuffer workstation;
|
||||
|
||||
QNtlmPhase1Block() {
|
||||
qstrncpy(magic, "NTLMSSP", 8);
|
||||
type = 1;
|
||||
@ -1118,9 +1085,18 @@ public:
|
||||
};
|
||||
|
||||
|
||||
class QNtlmPhase2Block : public QNtlmPhase2BlockBase
|
||||
class QNtlmPhase2Block
|
||||
{ // challenge
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
QNtlmBuffer targetName;
|
||||
quint32 flags = 0;
|
||||
unsigned char challenge[8] = {'\0'};
|
||||
quint32 context[2] = {0, 0};
|
||||
QNtlmBuffer targetInfo;
|
||||
enum { Size = 48 };
|
||||
|
||||
QNtlmPhase2Block() {
|
||||
magic[0] = 0;
|
||||
type = 0xffffffff;
|
||||
@ -1133,8 +1109,20 @@ public:
|
||||
|
||||
|
||||
|
||||
class QNtlmPhase3Block : public QNtlmPhase3BlockBase { // response
|
||||
class QNtlmPhase3Block
|
||||
{ // response
|
||||
public:
|
||||
char magic[8];
|
||||
quint32 type;
|
||||
QNtlmBuffer lmResponse;
|
||||
QNtlmBuffer ntlmResponse;
|
||||
QNtlmBuffer domain;
|
||||
QNtlmBuffer user;
|
||||
QNtlmBuffer workstation;
|
||||
QNtlmBuffer sessionKey;
|
||||
quint32 flags;
|
||||
enum { Size = 64 };
|
||||
|
||||
QNtlmPhase3Block() {
|
||||
qstrncpy(magic, "NTLMSSP", 8);
|
||||
type = 3;
|
||||
@ -1451,8 +1439,7 @@ static QByteArray qEncodeLmv2Response(const QAuthenticatorPrivate *ctx,
|
||||
|
||||
static bool qNtlmDecodePhase2(const QByteArray& data, QNtlmPhase2Block& ch)
|
||||
{
|
||||
Q_ASSERT(QNtlmPhase2BlockBase::Size == sizeof(QNtlmPhase2BlockBase));
|
||||
if (data.size() < QNtlmPhase2BlockBase::Size)
|
||||
if (data.size() < QNtlmPhase2Block::Size)
|
||||
return false;
|
||||
|
||||
|
||||
@ -1519,8 +1506,7 @@ static QByteArray qNtlmPhase3(QAuthenticatorPrivate *ctx, const QByteArray& phas
|
||||
pb.flags |= NTLMSSP_NEGOTIATE_OEM;
|
||||
|
||||
|
||||
int offset = QNtlmPhase3BlockBase::Size;
|
||||
Q_ASSERT(QNtlmPhase3BlockBase::Size == sizeof(QNtlmPhase3BlockBase));
|
||||
int offset = QNtlmPhase3Block::Size;
|
||||
|
||||
// for kerberos style user@domain logins, NTLM domain string should be left empty
|
||||
if (ctx->userDomain.isEmpty() && !ctx->extractedUser.contains(u'@')) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user