diff options
-rw-r--r-- | src/gss_sec_ctx.c | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/src/gss_sec_ctx.c b/src/gss_sec_ctx.c index d79670b..40817b8 100644 --- a/src/gss_sec_ctx.c +++ b/src/gss_sec_ctx.c @@ -591,6 +591,46 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status, goto done; } + /* acquire our own name */ + if (!server_name) { + gss_buffer_desc tmpbuf; + tmpbuf.value = discard_const(""); + tmpbuf.length = 0; + retmaj = gssntlm_import_name_by_mech(&retmin, + &gssntlm_oid, + &tmpbuf, + GSS_C_NT_HOSTBASED_SERVICE, + (gss_name_t *)&server_name); + if (retmaj) goto done; + } + + retmin = gssntlm_copy_name(server_name, &ctx->target_name); + if (retmin) { + retmaj = GSS_S_FAILURE; + goto done; + } + + computer_name = strdup(server_name->data.server.name); + if (!computer_name) { + retmin = ENOMEM; + retmaj = GSS_S_FAILURE; + goto done; + } + + retmin = netbios_get_names(computer_name, + &nb_computer_name, &nb_domain_name); + if (retmin) { + retmaj = GSS_S_FAILURE; + goto done; + } + + ctx->workstation = strdup(nb_computer_name); + if (!ctx->workstation) { + retmin = ENOMEM; + retmaj = GSS_S_FAILURE; + goto done; + } + /* FIXME: add call to determine if we are any other type of * server, including setting up callbacks to perform validation * against a remote DC */ @@ -692,46 +732,6 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status, goto done; } - /* acquire our own name */ - if (!server_name) { - gss_buffer_desc tmpbuf; - tmpbuf.value = discard_const(""); - tmpbuf.length = 0; - retmaj = gssntlm_import_name_by_mech(&retmin, - &gssntlm_oid, - &tmpbuf, - GSS_C_NT_HOSTBASED_SERVICE, - (gss_name_t *)&server_name); - if (retmaj) goto done; - } - - retmin = gssntlm_copy_name(server_name, &ctx->target_name); - if (retmin) { - retmaj = GSS_S_FAILURE; - goto done; - } - - computer_name = strdup(server_name->data.server.name); - if (!computer_name) { - retmin = ENOMEM; - retmaj = GSS_S_FAILURE; - goto done; - } - - retmin = netbios_get_names(computer_name, - &nb_computer_name, &nb_domain_name); - if (retmin) { - retmaj = GSS_S_FAILURE; - goto done; - } - - ctx->workstation = strdup(nb_computer_name); - if (!ctx->workstation) { - retmin = ENOMEM; - retmaj = GSS_S_FAILURE; - goto done; - } - timestamp = ntlm_timestamp_now(); retmin = ntlm_encode_target_info(ctx->ntlm, |