@@ -26,7 +26,6 @@ uint32_t gssntlm_init_sec_context(uint32_t *minor_status,
2626 struct gssntlm_ctx * ctx ;
2727 struct gssntlm_name * server = NULL ;
2828 struct gssntlm_cred * cred = NULL ;
29- char * computer_name = NULL ;
3029 char * nb_computer_name = NULL ;
3130 char * nb_domain_name = NULL ;
3231 struct gssntlm_name * client_name = NULL ;
@@ -165,13 +164,8 @@ uint32_t gssntlm_init_sec_context(uint32_t *minor_status,
165164 if (retmaj ) goto done ;
166165 }
167166
168- computer_name = strdup (client_name -> data .server .name );
169- if (!computer_name ) {
170- set_GSSERR (ENOMEM );
171- goto done ;
172- }
173-
174- retmin = netbios_get_names (ctx -> external_context , computer_name ,
167+ retmin = netbios_get_names (ctx -> external_context ,
168+ client_name -> data .server .name ,
175169 & nb_computer_name , & nb_domain_name );
176170 if (retmin ) {
177171 set_GSSERR (retmin );
@@ -433,7 +427,6 @@ uint32_t gssntlm_init_sec_context(uint32_t *minor_status,
433427 gssntlm_release_cred (& tmpmin , (gss_cred_id_t * )& cred );
434428 }
435429 gssntlm_release_name (& tmpmin , (gss_name_t * )& client_name );
436- safefree (computer_name );
437430 safefree (nb_computer_name );
438431 safefree (nb_domain_name );
439432 safefree (trgt_name );
@@ -532,7 +525,6 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status,
532525 int lm_compat_lvl = -1 ;
533526 struct ntlm_buffer challenge = { 0 };
534527 struct gssntlm_name * server_name = NULL ;
535- char * computer_name = NULL ;
536528 char * nb_computer_name = NULL ;
537529 char * nb_domain_name = NULL ;
538530 char * chal_target_name ;
@@ -618,13 +610,8 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status,
618610 goto done ;
619611 }
620612
621- computer_name = strdup (server_name -> data .server .name );
622- if (!computer_name ) {
623- set_GSSERR (ENOMEM );
624- goto done ;
625- }
626-
627- retmin = netbios_get_names (ctx -> external_context , computer_name ,
613+ retmin = netbios_get_names (ctx -> external_context ,
614+ server_name -> data .server .name ,
628615 & nb_computer_name , & nb_domain_name );
629616 if (retmin ) {
630617 set_GSSERR (retmin );
@@ -731,15 +718,19 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status,
731718 goto done ;
732719 }
733720
721+ av_flags = MSVAVFLAGS_UNVERIFIED_SPN ;
722+
734723 timestamp = ntlm_timestamp_now ();
735724
736725 retmin = ntlm_encode_target_info (ctx -> ntlm ,
737726 nb_computer_name ,
738727 nb_domain_name ,
739- computer_name ,
728+ server_name -> data . server . name ,
740729 NULL , NULL ,
741- NULL , & timestamp ,
742- NULL , NULL , NULL ,
730+ & av_flags , & timestamp ,
731+ NULL ,
732+ server_name -> data .server .spn ,
733+ NULL ,
743734 & target_info );
744735 if (retmin ) {
745736 set_GSSERR (retmin );
@@ -1028,7 +1019,6 @@ uint32_t gssntlm_accept_sec_context(uint32_t *minor_status,
10281019 gssntlm_release_name (& tmpmin , (gss_name_t * )& server_name );
10291020 gssntlm_release_name (& tmpmin , (gss_name_t * )& gss_usrname );
10301021 gssntlm_release_cred (& tmpmin , (gss_cred_id_t * )& usr_cred );
1031- safefree (computer_name );
10321022 safefree (nb_computer_name );
10331023 safefree (nb_domain_name );
10341024 safefree (usr_name );
0 commit comments