Lines 927-935
Link Here
|
927 |
{ |
927 |
{ |
928 |
krb5_error_code ret; |
928 |
krb5_error_code ret; |
929 |
krb5_creds creds; |
929 |
krb5_creds creds; |
930 |
krb5_cc_cursor cur; |
|
|
931 |
int found = 0; |
930 |
int found = 0; |
932 |
|
931 |
|
|
|
932 |
#ifdef HAVE_HEIMDAL |
933 |
krb5_creds pattern; |
934 |
krb5_realm *client_realm; |
935 |
|
936 |
krb5_cc_clear_mcred(&pattern); |
937 |
|
938 |
client_realm = krb5_princ_realm (context, principal); |
939 |
|
940 |
ret = krb5_make_principal (context, &pattern.server, |
941 |
*client_realm, KRB5_TGS_NAME, *client_realm, |
942 |
NULL); |
943 |
if (ret) |
944 |
krb5_err (context, 1, ret, "krb5_make_principal"); |
945 |
pattern.client = principal; |
946 |
|
947 |
ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds); |
948 |
krb5_free_principal (context, pattern.server); |
949 |
if (ret) { |
950 |
if (ret == KRB5_CC_END) |
951 |
return 1; |
952 |
krb5_err (context, 1, ret, "krb5_cc_retrieve_cred"); |
953 |
} |
954 |
|
955 |
found = creds.times.endtime > time(NULL); |
956 |
|
957 |
krb5_free_cred_contents (context, &creds); |
958 |
#else |
959 |
krb5_cc_cursor cur; |
960 |
|
933 |
ret = krb5_cc_start_seq_get(context, ccache, &cur); |
961 |
ret = krb5_cc_start_seq_get(context, ccache, &cur); |
934 |
if (ret) |
962 |
if (ret) |
935 |
return 0; |
963 |
return 0; |
Lines 949-954
Link Here
|
949 |
krb5_free_cred_contents(context, &creds); |
977 |
krb5_free_cred_contents(context, &creds); |
950 |
} |
978 |
} |
951 |
krb5_cc_end_seq_get(context, ccache, &cur); |
979 |
krb5_cc_end_seq_get(context, ccache, &cur); |
|
|
980 |
#endif |
952 |
|
981 |
|
953 |
return found; |
982 |
return found; |
954 |
} |
983 |
} |
Lines 995-1000
Link Here
|
995 |
} |
1024 |
} |
996 |
krb5_free_principal(context, principal); |
1025 |
krb5_free_principal(context, principal); |
997 |
err_princ: |
1026 |
err_princ: |
|
|
1027 |
#ifdef HAVE_HEIMDAL |
1028 |
#define KRB5_TC_OPENCLOSE 0x00000001 |
1029 |
#endif |
998 |
krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE); |
1030 |
krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE); |
999 |
krb5_cc_close(context, ccache); |
1031 |
krb5_cc_close(context, ccache); |
1000 |
err_cache: |
1032 |
err_cache: |