mirror of
https://github.com/samba-team/samba.git
synced 2025-02-08 05:57:51 +03:00
r25134: Fix Bug #4968 and make dns updates work with heimdal as well (again,
gss_import_name() needs to follow the same logic as in the LDAP sasl wrapping (see -r25133). Tested with MIT 1.2.7, 1.3.6, 1.4.3, 1.5.1, 1.6.1 and Heimdal 0.7.2, 1.0, 1.0.1. Guenther (This used to be commit 913fb138aa90a6627ee49b2e92d1bbc73e11f9ea)
This commit is contained in:
parent
1874c564db
commit
fa78132ab5
@ -219,11 +219,8 @@ DNS_ERROR dns_negotiate_sec_ctx( const char *target_realm,
|
|||||||
|
|
||||||
gss_name_t targ_name;
|
gss_name_t targ_name;
|
||||||
|
|
||||||
krb5_principal host_principal;
|
|
||||||
krb5_context krb_ctx = NULL;
|
|
||||||
|
|
||||||
gss_OID_desc nt_host_oid_desc =
|
gss_OID_desc nt_host_oid_desc =
|
||||||
{ 10, (char *)"\052\206\110\206\367\022\001\002\002\002" };
|
{10, (char *)"\x2a\x86\x48\x86\xf7\x12\x01\x02\x02\x01"};
|
||||||
|
|
||||||
TALLOC_CTX *mem_ctx;
|
TALLOC_CTX *mem_ctx;
|
||||||
|
|
||||||
@ -247,23 +244,13 @@ DNS_ERROR dns_negotiate_sec_ctx( const char *target_realm,
|
|||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
krb5_init_context( &krb_ctx );
|
input_name.value = targetname;
|
||||||
krb5_parse_name( krb_ctx, targetname, &host_principal );
|
input_name.length = strlen(targetname);
|
||||||
|
|
||||||
/* don't free the principal until after you call
|
|
||||||
gss_release_name() or else you'll get a segv
|
|
||||||
as the krb5_copy_principal() does a structure
|
|
||||||
copy and not a deep copy. --jerry*/
|
|
||||||
|
|
||||||
input_name.value = &host_principal;
|
|
||||||
input_name.length = sizeof( host_principal );
|
|
||||||
|
|
||||||
major = gss_import_name( &minor, &input_name,
|
major = gss_import_name( &minor, &input_name,
|
||||||
&nt_host_oid_desc, &targ_name );
|
&nt_host_oid_desc, &targ_name );
|
||||||
|
|
||||||
if (major) {
|
if (major) {
|
||||||
krb5_free_principal( krb_ctx, host_principal );
|
|
||||||
krb5_free_context( krb_ctx );
|
|
||||||
err = ERROR_DNS_GSS_ERROR;
|
err = ERROR_DNS_GSS_ERROR;
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
@ -273,11 +260,6 @@ DNS_ERROR dns_negotiate_sec_ctx( const char *target_realm,
|
|||||||
|
|
||||||
gss_release_name( &minor, &targ_name );
|
gss_release_name( &minor, &targ_name );
|
||||||
|
|
||||||
/* now we can free the principal */
|
|
||||||
|
|
||||||
krb5_free_principal( krb_ctx, host_principal );
|
|
||||||
krb5_free_context( krb_ctx );
|
|
||||||
|
|
||||||
error:
|
error:
|
||||||
TALLOC_FREE(mem_ctx);
|
TALLOC_FREE(mem_ctx);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user