Ignore:
Timestamp:
Mar 12, 2008, 9:08:18 AM (17 years ago)
Author:
Paul Smedley
Message:

Update source to 3.0.28a

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/samba-3.0/source/libads/kerberos.c

    r71 r124  
    363363}
    364364
     365/************************************************************************
     366 Routine to get the default realm from the kerberos credentials cache.
     367 Caller must free if the return value is not NULL.
     368************************************************************************/
     369
     370char *kerberos_get_default_realm_from_ccache( void )
     371{
     372        char *realm = NULL;
     373        krb5_context ctx = NULL;
     374        krb5_ccache cc = NULL;
     375        krb5_principal princ = NULL;
     376
     377        initialize_krb5_error_table();
     378        if (krb5_init_context(&ctx)) {
     379                return NULL;
     380        }
     381
     382        DEBUG(5,("kerberos_get_default_realm_from_ccache: "
     383                "Trying to read krb5 cache: %s\n",
     384                krb5_cc_default_name(ctx)));
     385        if (krb5_cc_default(ctx, &cc)) {
     386                DEBUG(0,("kerberos_get_default_realm_from_ccache: "
     387                        "failed to read default cache\n"));
     388                goto out;
     389        }
     390        if (krb5_cc_get_principal(ctx, cc, &princ)) {
     391                DEBUG(0,("kerberos_get_default_realm_from_ccache: "
     392                        "failed to get default principal\n"));
     393                goto out;
     394        }
     395
     396#if defined(HAVE_KRB5_PRINCIPAL_GET_REALM)
     397        realm = SMB_STRDUP(krb5_principal_get_realm(ctx, princ));
     398#elif defined(HAVE_KRB5_PRINC_REALM)
     399        {
     400                krb5_data *realm_data = krb5_princ_realm(ctx, princ);
     401                realm = SMB_STRNDUP(realm_data->data, realm_data->length);
     402        }
     403#endif
     404
     405  out:
     406
     407        if (princ) {
     408                krb5_free_principal(ctx, princ);
     409        }
     410        if (cc) {
     411                krb5_cc_close(ctx, cc);
     412        }
     413        if (ctx) {
     414                krb5_free_context(ctx);
     415        }
     416
     417        return realm;
     418}
     419
    365420
    366421/************************************************************************
     
    622677                return False;
    623678        }
    624                
    625         file_contents = talloc_asprintf(fname, "[libdefaults]\n\tdefault_realm = %s\n\n"
    626                                 "[realms]\n\t%s = {\n"
    627                                 "\t%s\t}\n",
    628                                 realm_upper, realm_upper, kdc_ip_string);
     679
     680        file_contents = talloc_asprintf(fname,
     681                                        "[libdefaults]\n\tdefault_realm = %s\n"
     682                                        "default_tgs_enctypes = RC4-HMAC DES-CBC-CRC DES-CBC-MD5\n"
     683                                        "default_tkt_enctypes = RC4-HMAC DES-CBC-CRC DES-CBC-MD5\n"
     684                                        "preferred_enctypes = RC4-HMAC DES-CBC-CRC DES-CBC-MD5\n\n"
     685                                        "[realms]\n\t%s = {\n"
     686                                        "\t%s\t}\n",
     687                                        realm_upper, realm_upper, kdc_ip_string);
    629688
    630689        if (!file_contents) {
Note: See TracChangeset for help on using the changeset viewer.