[CIFS] remove level of indentation from decode_negTokenInit
Most of this function takes place inside of an unnecessary "else" clause. The other 2 cases both return 0, so we can remove some indentation here. Signed-off-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: Steve French <sfrench@us.ibm.com>
This commit is contained in:
parent
176803562b
commit
2f0e58ac3a
283
fs/cifs/asn1.c
283
fs/cifs/asn1.c
|
@ -483,6 +483,7 @@ decode_negTokenInit(unsigned char *security_blob, int length,
|
||||||
|
|
||||||
asn1_open(&ctx, security_blob, length);
|
asn1_open(&ctx, security_blob, length);
|
||||||
|
|
||||||
|
/* GSSAPI header */
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
cFYI(1, ("Error decoding negTokenInit header"));
|
cFYI(1, ("Error decoding negTokenInit header"));
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -490,155 +491,143 @@ decode_negTokenInit(unsigned char *security_blob, int length,
|
||||||
|| (tag != ASN1_EOC)) {
|
|| (tag != ASN1_EOC)) {
|
||||||
cFYI(1, ("cls = %d con = %d tag = %d", cls, con, tag));
|
cFYI(1, ("cls = %d con = %d tag = %d", cls, con, tag));
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
|
||||||
/* remember to free obj->oid */
|
|
||||||
rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
|
|
||||||
if (rc) {
|
|
||||||
if ((tag == ASN1_OJI) && (con == ASN1_PRI) &&
|
|
||||||
(cls == ASN1_UNI)) {
|
|
||||||
rc = asn1_oid_decode(&ctx, end, &oid, &oidlen);
|
|
||||||
if (rc) {
|
|
||||||
rc = compare_oid(oid, oidlen,
|
|
||||||
SPNEGO_OID,
|
|
||||||
SPNEGO_OID_LEN);
|
|
||||||
kfree(oid);
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
rc = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!rc) {
|
|
||||||
cFYI(1, ("Error decoding negTokenInit header"));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1, ("Error decoding negTokenInit"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)
|
|
||||||
|| (tag != ASN1_EOC)) {
|
|
||||||
cFYI(1,
|
|
||||||
("cls = %d con = %d tag = %d end = %p (%d) exit 0",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1, ("Error decoding negTokenInit"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
|
||||||
|| (tag != ASN1_SEQ)) {
|
|
||||||
cFYI(1,
|
|
||||||
("cls = %d con = %d tag = %d end = %p (%d) exit 1",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1, ("Error decoding 2nd part of negTokenInit"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)
|
|
||||||
|| (tag != ASN1_EOC)) {
|
|
||||||
cFYI(1,
|
|
||||||
("cls = %d con = %d tag = %d end = %p (%d) exit 0",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode
|
|
||||||
(&ctx, &sequence_end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1, ("Error decoding 2nd part of negTokenInit"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
|
||||||
|| (tag != ASN1_SEQ)) {
|
|
||||||
cFYI(1,
|
|
||||||
("cls = %d con = %d tag = %d end = %p (%d) exit 1",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
while (!asn1_eoc_decode(&ctx, sequence_end)) {
|
|
||||||
rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
|
|
||||||
if (!rc) {
|
|
||||||
cFYI(1,
|
|
||||||
("Error decoding negTokenInit hdr exit2"));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if ((tag == ASN1_OJI) && (con == ASN1_PRI)) {
|
|
||||||
if (asn1_oid_decode(&ctx, end, &oid, &oidlen)) {
|
|
||||||
|
|
||||||
cFYI(1,
|
|
||||||
("OID len = %d oid = 0x%lx 0x%lx "
|
|
||||||
"0x%lx 0x%lx",
|
|
||||||
oidlen, *oid, *(oid + 1),
|
|
||||||
*(oid + 2), *(oid + 3)));
|
|
||||||
|
|
||||||
if (compare_oid(oid, oidlen,
|
|
||||||
MSKRB5_OID,
|
|
||||||
MSKRB5_OID_LEN))
|
|
||||||
use_kerberos = true;
|
|
||||||
else if (compare_oid(oid, oidlen,
|
|
||||||
KRB5_OID,
|
|
||||||
KRB5_OID_LEN))
|
|
||||||
use_kerberos = true;
|
|
||||||
else if (compare_oid(oid, oidlen,
|
|
||||||
NTLMSSP_OID,
|
|
||||||
NTLMSSP_OID_LEN))
|
|
||||||
use_ntlmssp = true;
|
|
||||||
|
|
||||||
kfree(oid);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
cFYI(1, ("Should be an oid what is going on?"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1,
|
|
||||||
("Error decoding last part negTokenInit exit3"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
|
|
||||||
/* tag = 3 indicating mechListMIC */
|
|
||||||
cFYI(1,
|
|
||||||
("Exit 4 cls = %d con = %d tag = %d end = %p (%d)",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1,
|
|
||||||
("Error decoding last part negTokenInit exit5"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
|
||||||
|| (tag != ASN1_SEQ)) {
|
|
||||||
cFYI(1, ("cls = %d con = %d tag = %d end = %p (%d)",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1,
|
|
||||||
("Error decoding last part negTokenInit exit 7"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
|
|
||||||
cFYI(1,
|
|
||||||
("Exit 8 cls = %d con = %d tag = %d end = %p (%d)",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
|
||||||
cFYI(1,
|
|
||||||
("Error decoding last part negTokenInit exit9"));
|
|
||||||
return 0;
|
|
||||||
} else if ((cls != ASN1_UNI) || (con != ASN1_PRI)
|
|
||||||
|| (tag != ASN1_GENSTR)) {
|
|
||||||
cFYI(1,
|
|
||||||
("Exit10 cls = %d con = %d tag = %d end = %p (%d)",
|
|
||||||
cls, con, tag, end, *end));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
cFYI(1, ("Need to call asn1_octets_decode() function for %s",
|
|
||||||
ctx.pointer)); /* is this UTF-8 or ASCII? */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Check for SPNEGO OID -- remember to free obj->oid */
|
||||||
|
rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
|
||||||
|
if (rc) {
|
||||||
|
if ((tag == ASN1_OJI) && (con == ASN1_PRI) &&
|
||||||
|
(cls == ASN1_UNI)) {
|
||||||
|
rc = asn1_oid_decode(&ctx, end, &oid, &oidlen);
|
||||||
|
if (rc) {
|
||||||
|
rc = compare_oid(oid, oidlen, SPNEGO_OID,
|
||||||
|
SPNEGO_OID_LEN);
|
||||||
|
kfree(oid);
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
rc = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* SPNEGO OID not present or garbled -- bail out */
|
||||||
|
if (!rc) {
|
||||||
|
cFYI(1, ("Error decoding negTokenInit header"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding negTokenInit"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)
|
||||||
|
|| (tag != ASN1_EOC)) {
|
||||||
|
cFYI(1,
|
||||||
|
("cls = %d con = %d tag = %d end = %p (%d) exit 0",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding negTokenInit"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
||||||
|
|| (tag != ASN1_SEQ)) {
|
||||||
|
cFYI(1,
|
||||||
|
("cls = %d con = %d tag = %d end = %p (%d) exit 1",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding 2nd part of negTokenInit"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)
|
||||||
|
|| (tag != ASN1_EOC)) {
|
||||||
|
cFYI(1,
|
||||||
|
("cls = %d con = %d tag = %d end = %p (%d) exit 0",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode
|
||||||
|
(&ctx, &sequence_end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding 2nd part of negTokenInit"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
||||||
|
|| (tag != ASN1_SEQ)) {
|
||||||
|
cFYI(1,
|
||||||
|
("cls = %d con = %d tag = %d end = %p (%d) exit 1",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (!asn1_eoc_decode(&ctx, sequence_end)) {
|
||||||
|
rc = asn1_header_decode(&ctx, &end, &cls, &con, &tag);
|
||||||
|
if (!rc) {
|
||||||
|
cFYI(1,
|
||||||
|
("Error decoding negTokenInit hdr exit2"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if ((tag == ASN1_OJI) && (con == ASN1_PRI)) {
|
||||||
|
if (asn1_oid_decode(&ctx, end, &oid, &oidlen)) {
|
||||||
|
|
||||||
|
cFYI(1, ("OID len = %d oid = 0x%lx 0x%lx "
|
||||||
|
"0x%lx 0x%lx", oidlen, *oid,
|
||||||
|
*(oid + 1), *(oid + 2), *(oid + 3)));
|
||||||
|
|
||||||
|
if (compare_oid(oid, oidlen, MSKRB5_OID,
|
||||||
|
MSKRB5_OID_LEN))
|
||||||
|
use_kerberos = true;
|
||||||
|
else if (compare_oid(oid, oidlen, KRB5_OID,
|
||||||
|
KRB5_OID_LEN))
|
||||||
|
use_kerberos = true;
|
||||||
|
else if (compare_oid(oid, oidlen, NTLMSSP_OID,
|
||||||
|
NTLMSSP_OID_LEN))
|
||||||
|
use_ntlmssp = true;
|
||||||
|
|
||||||
|
kfree(oid);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
cFYI(1, ("Should be an oid what is going on?"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding last part negTokenInit exit3"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
|
||||||
|
/* tag = 3 indicating mechListMIC */
|
||||||
|
cFYI(1, ("Exit 4 cls = %d con = %d tag = %d end = %p (%d)",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding last part negTokenInit exit5"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_UNI) || (con != ASN1_CON)
|
||||||
|
|| (tag != ASN1_SEQ)) {
|
||||||
|
cFYI(1, ("cls = %d con = %d tag = %d end = %p (%d)",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding last part negTokenInit exit 7"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_CTX) || (con != ASN1_CON)) {
|
||||||
|
cFYI(1, ("Exit 8 cls = %d con = %d tag = %d end = %p (%d)",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (asn1_header_decode(&ctx, &end, &cls, &con, &tag) == 0) {
|
||||||
|
cFYI(1, ("Error decoding last part negTokenInit exit9"));
|
||||||
|
return 0;
|
||||||
|
} else if ((cls != ASN1_UNI) || (con != ASN1_PRI)
|
||||||
|
|| (tag != ASN1_GENSTR)) {
|
||||||
|
cFYI(1, ("Exit10 cls = %d con = %d tag = %d end = %p (%d)",
|
||||||
|
cls, con, tag, end, *end));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
cFYI(1, ("Need to call asn1_octets_decode() function for %s",
|
||||||
|
ctx.pointer)); /* is this UTF-8 or ASCII? */
|
||||||
|
|
||||||
if (use_kerberos)
|
if (use_kerberos)
|
||||||
*secType = Kerberos;
|
*secType = Kerberos;
|
||||||
else if (use_ntlmssp)
|
else if (use_ntlmssp)
|
||||||
|
|
|
@ -101,5 +101,5 @@ extern long cifs_ioctl(struct file *filep, unsigned int cmd, unsigned long arg);
|
||||||
extern const struct export_operations cifs_export_ops;
|
extern const struct export_operations cifs_export_ops;
|
||||||
#endif /* EXPERIMENTAL */
|
#endif /* EXPERIMENTAL */
|
||||||
|
|
||||||
#define CIFS_VERSION "1.53"
|
#define CIFS_VERSION "1.54"
|
||||||
#endif /* _CIFSFS_H */
|
#endif /* _CIFSFS_H */
|
||||||
|
|
Loading…
Reference in New Issue