diff options
-rw-r--r-- | source4/libcli/auth/spnego.h | 3 | ||||
-rw-r--r-- | source4/libcli/auth/spnego_parse.c | 8 |
2 files changed, 7 insertions, 4 deletions
diff --git a/source4/libcli/auth/spnego.h b/source4/libcli/auth/spnego.h index eba98c5218..decd79e107 100644 --- a/source4/libcli/auth/spnego.h +++ b/source4/libcli/auth/spnego.h @@ -36,7 +36,8 @@ enum spnego_negResult { SPNEGO_ACCEPT_COMPLETED = 0, SPNEGO_ACCEPT_INCOMPLETE = 1, - SPNEGO_REJECT = 2 + SPNEGO_REJECT = 2, + SPNEGO_NONE_RESULT = 3 }; struct spnego_negTokenInit { diff --git a/source4/libcli/auth/spnego_parse.c b/source4/libcli/auth/spnego_parse.c index c2e23c0ffe..9c50e3887d 100644 --- a/source4/libcli/auth/spnego_parse.c +++ b/source4/libcli/auth/spnego_parse.c @@ -231,9 +231,11 @@ static BOOL write_negTokenTarg(ASN1_DATA *asn1, struct spnego_negTokenTarg *toke asn1_push_tag(asn1, ASN1_CONTEXT(1)); asn1_push_tag(asn1, ASN1_SEQUENCE(0)); - asn1_push_tag(asn1, ASN1_CONTEXT(0)); - asn1_write_enumerated(asn1, token->negResult); - asn1_pop_tag(asn1); + if (token->negResult != SPNEGO_NONE_RESULT) { + asn1_push_tag(asn1, ASN1_CONTEXT(0)); + asn1_write_enumerated(asn1, token->negResult); + asn1_pop_tag(asn1); + } if (token->supportedMech) { asn1_push_tag(asn1, ASN1_CONTEXT(1)); |