|
@@ -492,17 +492,13 @@ compare_oid(unsigned long *oid1, unsigned int oid1len,
|
|
|
|
|
|
int
|
|
|
decode_negTokenInit(unsigned char *security_blob, int length,
|
|
|
- enum securityEnum *secType)
|
|
|
+ struct TCP_Server_Info *server)
|
|
|
{
|
|
|
struct asn1_ctx ctx;
|
|
|
unsigned char *end;
|
|
|
unsigned char *sequence_end;
|
|
|
unsigned long *oid = NULL;
|
|
|
unsigned int cls, con, tag, oidlen, rc;
|
|
|
- bool use_ntlmssp = false;
|
|
|
- bool use_kerberos = false;
|
|
|
- bool use_kerberosu2u = false;
|
|
|
- bool use_mskerberos = false;
|
|
|
|
|
|
/* cifs_dump_mem(" Received SecBlob ", security_blob, length); */
|
|
|
|
|
@@ -599,20 +595,17 @@ decode_negTokenInit(unsigned char *security_blob, int length,
|
|
|
*(oid + 1), *(oid + 2), *(oid + 3));
|
|
|
|
|
|
if (compare_oid(oid, oidlen, MSKRB5_OID,
|
|
|
- MSKRB5_OID_LEN) &&
|
|
|
- !use_mskerberos)
|
|
|
- use_mskerberos = true;
|
|
|
+ MSKRB5_OID_LEN))
|
|
|
+ server->sec_mskerberos = true;
|
|
|
else if (compare_oid(oid, oidlen, KRB5U2U_OID,
|
|
|
- KRB5U2U_OID_LEN) &&
|
|
|
- !use_kerberosu2u)
|
|
|
- use_kerberosu2u = true;
|
|
|
+ KRB5U2U_OID_LEN))
|
|
|
+ server->sec_kerberosu2u = true;
|
|
|
else if (compare_oid(oid, oidlen, KRB5_OID,
|
|
|
- KRB5_OID_LEN) &&
|
|
|
- !use_kerberos)
|
|
|
- use_kerberos = true;
|
|
|
+ KRB5_OID_LEN))
|
|
|
+ server->sec_kerberos = true;
|
|
|
else if (compare_oid(oid, oidlen, NTLMSSP_OID,
|
|
|
NTLMSSP_OID_LEN))
|
|
|
- use_ntlmssp = true;
|
|
|
+ server->sec_ntlmssp = true;
|
|
|
|
|
|
kfree(oid);
|
|
|
}
|
|
@@ -669,12 +662,5 @@ decode_negTokenInit(unsigned char *security_blob, int length,
|
|
|
cFYI(1, "Need to call asn1_octets_decode() function for %s",
|
|
|
ctx.pointer); /* is this UTF-8 or ASCII? */
|
|
|
decode_negtoken_exit:
|
|
|
- if (use_kerberos)
|
|
|
- *secType = Kerberos;
|
|
|
- else if (use_mskerberos)
|
|
|
- *secType = MSKerberos;
|
|
|
- else if (use_ntlmssp)
|
|
|
- *secType = RawNTLMSSP;
|
|
|
-
|
|
|
return 1;
|
|
|
}
|