diff options
author | Simo Sorce <simo@redhat.com> | 2014-08-08 16:11:40 -0400 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2014-08-08 18:29:25 -0400 |
commit | 0033db0bdb6db653ab43b99ca4b343148739e5c2 (patch) | |
tree | 49bb12b367bb2fed56a1c7c62889896e5a4d9579 | |
parent | fd4464077fee7b309059f7c39ab89925a4a7dac0 (diff) | |
download | gss-ntlmssp-0033db0bdb6db653ab43b99ca4b343148739e5c2.tar.gz gss-ntlmssp-0033db0bdb6db653ab43b99ca4b343148739e5c2.tar.xz gss-ntlmssp-0033db0bdb6db653ab43b99ca4b343148739e5c2.zip |
Ignore domain and workstation in negotiate message
We never use these fields, so do not even attempt to decode them
just ignore completely.
-rw-r--r-- | src/gss_sec_ctx.c | 6 | ||||
-rw-r--r-- | src/ntlm.c | 10 |
2 files changed, 7 insertions, 9 deletions
diff --git a/src/gss_sec_ctx.c b/src/gss_sec_ctx.c index 4802567..3b06d18 100644 --- a/src/gss_sec_ctx.c +++ b/src/gss_sec_ctx.c @@ -521,8 +521,6 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status, struct gssntlm_ctx *ctx; struct gssntlm_cred *cred; int lm_compat_lvl = -1; - char *workstation = NULL; - char *domain = NULL; struct ntlm_buffer challenge = { 0 }; struct gssntlm_name *server_name = NULL; char *computer_name = NULL; @@ -674,7 +672,7 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status, } retmin = ntlm_decode_neg_msg(ctx->ntlm, &ctx->nego_msg, &in_flags, - &domain, &workstation); + NULL, NULL); if (retmin) { retmaj = GSS_S_DEFECTIVE_TOKEN; goto done; @@ -1003,8 +1001,6 @@ done: safefree(computer_name); safefree(nb_computer_name); safefree(nb_domain_name); - safefree(workstation); - safefree(domain); safefree(usr_name); safefree(dom_name); safefree(wks_name); @@ -979,12 +979,14 @@ int ntlm_decode_neg_msg(struct ntlm_ctx *ctx, neg_flags = le32toh(msg->neg_flags); - if (neg_flags & NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED) { + if (domain && + (neg_flags & NTLMSSP_NEGOTIATE_OEM_DOMAIN_SUPPLIED)) { ret = ntlm_decode_oem_str(&msg->domain_name, buffer, payload_offs, &dom); if (ret) goto done; } - if (neg_flags & NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED) { + if (workstation && + (neg_flags & NTLMSSP_NEGOTIATE_OEM_WORKSTATION_SUPPLIED)) { ret = ntlm_decode_oem_str(&msg->workstation_name, buffer, payload_offs, &wks); if (ret) goto done; @@ -996,8 +998,8 @@ done: safefree(wks); } else { *flags = neg_flags; - *domain = dom; - *workstation = wks; + if (domain) *domain = dom; + if (workstation) *workstation = wks; } return ret; } |