]>
Commit | Line | Data |
---|---|---|
7e12652e JR |
1 | --- utils/gssd/krb5_util.c 2008-10-17 14:20:09.000000000 +0000 |
2 | +++ utils/gssd/krb5_util.c 2008-11-22 13:52:42.000000000 +0000 | |
3 | @@ -927,9 +927,37 @@ | |
4 | { | |
5 | krb5_error_code ret; | |
6 | krb5_creds creds; | |
7 | - krb5_cc_cursor cur; | |
8 | int found = 0; | |
9 | ||
10 | +#ifdef HAVE_HEIMDAL | |
11 | + krb5_creds pattern; | |
12 | + krb5_realm *client_realm; | |
13 | + | |
14 | + krb5_cc_clear_mcred(&pattern); | |
15 | + | |
16 | + client_realm = krb5_princ_realm (context, principal); | |
17 | + | |
18 | + ret = krb5_make_principal (context, &pattern.server, | |
19 | + *client_realm, KRB5_TGS_NAME, *client_realm, | |
20 | + NULL); | |
21 | + if (ret) | |
22 | + krb5_err (context, 1, ret, "krb5_make_principal"); | |
23 | + pattern.client = principal; | |
24 | + | |
25 | + ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds); | |
26 | + krb5_free_principal (context, pattern.server); | |
27 | + if (ret) { | |
28 | + if (ret == KRB5_CC_END) | |
29 | + return 1; | |
30 | + krb5_err (context, 1, ret, "krb5_cc_retrieve_cred"); | |
31 | + } | |
32 | + | |
33 | + found = creds.times.endtime > time(NULL); | |
34 | + | |
35 | + krb5_free_cred_contents (context, &creds); | |
36 | +#else | |
37 | + krb5_cc_cursor cur; | |
38 | + | |
39 | ret = krb5_cc_start_seq_get(context, ccache, &cur); | |
40 | if (ret) | |
41 | return 0; | |
42 | @@ -949,6 +977,7 @@ | |
43 | krb5_free_cred_contents(context, &creds); | |
44 | } | |
45 | krb5_cc_end_seq_get(context, ccache, &cur); | |
46 | +#endif | |
47 | ||
48 | return found; | |
49 | } | |
50 | @@ -995,6 +1024,9 @@ | |
51 | } | |
52 | krb5_free_principal(context, principal); | |
53 | err_princ: | |
54 | +#ifdef HAVE_HEIMDAL | |
55 | +#define KRB5_TC_OPENCLOSE 0x00000001 | |
56 | +#endif | |
57 | krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE); | |
58 | krb5_cc_close(context, ccache); | |
59 | err_cache: | |
5eef8ef1 | 60 | @@ -1262,7 +1294,11 @@ |
11212b0d JR |
61 | if (context != NULL) { |
62 | origmsg = krb5_get_error_message(context, code); | |
63 | msg = strdup(origmsg); | |
5eef8ef1 | 64 | +#ifdef HAVE_HEIMDAL |
11212b0d | 65 | + krb5_free_error_string(context, origmsg); |
5eef8ef1 JR |
66 | +#else |
67 | krb5_free_error_message(context, origmsg); | |
68 | +#endif | |
11212b0d JR |
69 | } |
70 | #endif | |
71 | if (msg != NULL) |