We never use these fields, so do not even attempt to decode them
just ignore completely.
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;
}
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;
safefree(computer_name);
safefree(nb_computer_name);
safefree(nb_domain_name);
- safefree(workstation);
- safefree(domain);
safefree(usr_name);
safefree(dom_name);
safefree(wks_name);
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;
safefree(wks);
} else {
*flags = neg_flags;
- *domain = dom;
- *workstation = wks;
+ if (domain) *domain = dom;
+ if (workstation) *workstation = wks;
}
return ret;
}