mirror of
https://github.com/samba-team/samba.git
synced 2024-12-25 23:21:54 +03:00
r22003: Fix from Jiri.Sasek@Sun.COM to wrap our krb5_locate_kdc
call as smb_krb5_locate_kdc to prevent incorrect linking and crashes on Solaris. Jeremy.
This commit is contained in:
parent
1a3980f1fc
commit
7d30737c8d
@ -1120,7 +1120,10 @@ int create_kerberos_key_from_string(krb5_context context, krb5_principal host_pr
|
||||
int create_kerberos_key_from_string_direct(krb5_context context, krb5_principal host_princ, krb5_data *password, krb5_keyblock *key, krb5_enctype enctype);
|
||||
BOOL get_auth_data_from_tkt(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, krb5_ticket *tkt);
|
||||
krb5_const_principal get_principal_from_tkt(krb5_ticket *tkt);
|
||||
krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
|
||||
#if defined(HAVE_KRB5_LOCATE_KDC)
|
||||
krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters);
|
||||
#endif
|
||||
krb5_error_code get_kerberos_allowed_etypes(krb5_context context, krb5_enctype **enctypes);
|
||||
BOOL get_krb5_smb_session_key(krb5_context context, krb5_auth_context auth_context, DATA_BLOB *session_key, BOOL remote);
|
||||
krb5_error_code smb_krb5_kt_free_entry(krb5_context context, krb5_keytab_entry *kt_entry);
|
||||
|
@ -393,7 +393,7 @@ BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
|
||||
|
||||
#if defined(KRB5_KRBHST_INIT)
|
||||
/* Heimdal */
|
||||
krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters)
|
||||
krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm, struct sockaddr **addr_pp, int *naddrs, int get_masters)
|
||||
{
|
||||
krb5_krbhst_handle hnd;
|
||||
krb5_krbhst_info *hinfo;
|
||||
@ -407,7 +407,7 @@ BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
|
||||
|
||||
rc = krb5_krbhst_init(ctx, realm->data, KRB5_KRBHST_KDC, &hnd);
|
||||
if (rc) {
|
||||
DEBUG(0, ("krb5_locate_kdc: krb5_krbhst_init failed (%s)\n", error_message(rc)));
|
||||
DEBUG(0, ("smb_krb5_locate_kdc: krb5_krbhst_init failed (%s)\n", error_message(rc)));
|
||||
return rc;
|
||||
}
|
||||
|
||||
@ -417,14 +417,14 @@ BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
|
||||
krb5_krbhst_reset(ctx, hnd);
|
||||
|
||||
if (!num_kdcs) {
|
||||
DEBUG(0, ("krb5_locate_kdc: zero kdcs found !\n"));
|
||||
DEBUG(0, ("smb_krb5_locate_kdc: zero kdcs found !\n"));
|
||||
krb5_krbhst_free(ctx, hnd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
sa = SMB_MALLOC_ARRAY( struct sockaddr, num_kdcs );
|
||||
if (!sa) {
|
||||
DEBUG(0, ("krb5_locate_kdc: malloc failed\n"));
|
||||
DEBUG(0, ("smb_krb5_locate_kdc: malloc failed\n"));
|
||||
krb5_krbhst_free(ctx, hnd);
|
||||
naddrs = 0;
|
||||
return -1;
|
||||
@ -454,7 +454,7 @@ BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
|
||||
|
||||
#else /* ! defined(KRB5_KRBHST_INIT) */
|
||||
|
||||
krb5_error_code krb5_locate_kdc(krb5_context ctx, const krb5_data *realm,
|
||||
krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm,
|
||||
struct sockaddr **addr_pp, int *naddrs, int get_masters)
|
||||
{
|
||||
DEBUG(0, ("unable to explicitly locate the KDC on this platform\n"));
|
||||
@ -463,6 +463,14 @@ BOOL unwrap_pac(TALLOC_CTX *mem_ctx, DATA_BLOB *auth_data, DATA_BLOB *unwrapped_
|
||||
|
||||
#endif /* KRB5_KRBHST_INIT */
|
||||
|
||||
#else /* ! HAVE_KRB5_LOCATE_KDC */
|
||||
|
||||
krb5_error_code smb_krb5_locate_kdc(krb5_context ctx, const krb5_data *realm,
|
||||
struct sockaddr **addr_pp, int *naddrs, int get_masters)
|
||||
{
|
||||
return krb5_locate_kdc(ctx, realm, addr_pp, naddrs, get_masters);
|
||||
}
|
||||
|
||||
#endif /* HAVE_KRB5_LOCATE_KDC */
|
||||
|
||||
#if !defined(HAVE_KRB5_FREE_UNPARSED_NAME)
|
||||
|
@ -238,9 +238,9 @@ static int net_lookup_kdc(int argc, const char **argv)
|
||||
realm.length = strlen((const char *)realm.data);
|
||||
}
|
||||
|
||||
rc = krb5_locate_kdc(ctx, &realm, (struct sockaddr **)(void *)&addrs, &num_kdcs, 0);
|
||||
rc = smb_krb5_locate_kdc(ctx, &realm, (struct sockaddr **)(void *)&addrs, &num_kdcs, 0);
|
||||
if (rc) {
|
||||
DEBUG(1, ("krb5_locate_kdc failed (%s)\n", error_message(rc)));
|
||||
DEBUG(1, ("smb_krb5_locate_kdc failed (%s)\n", error_message(rc)));
|
||||
return -1;
|
||||
}
|
||||
for (i=0;i<num_kdcs;i++)
|
||||
|
Loading…
Reference in New Issue
Block a user