]>
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 | |
e8168b46 JR |
3 | @@ -115,9 +115,7 @@ |
4 | #include <errno.h> | |
5 | #include <time.h> | |
6 | #include <gssapi/gssapi.h> | |
7 | -#ifdef USE_PRIVATE_KRB5_FUNCTIONS | |
8 | #include <gssapi/gssapi_krb5.h> | |
9 | -#endif | |
10 | #include <krb5.h> | |
11 | #include <rpc/auth_gss.h> | |
12 | ||
7e12652e JR |
13 | @@ -927,9 +927,37 @@ |
14 | { | |
15 | krb5_error_code ret; | |
16 | krb5_creds creds; | |
17 | - krb5_cc_cursor cur; | |
18 | int found = 0; | |
19 | ||
20 | +#ifdef HAVE_HEIMDAL | |
21 | + krb5_creds pattern; | |
e8168b46 | 22 | + krb5_const_realm client_realm; |
7e12652e JR |
23 | + |
24 | + krb5_cc_clear_mcred(&pattern); | |
25 | + | |
e8168b46 | 26 | + client_realm = krb5_principal_get_realm (context, principal); |
7e12652e JR |
27 | + |
28 | + ret = krb5_make_principal (context, &pattern.server, | |
e8168b46 | 29 | + client_realm, KRB5_TGS_NAME, client_realm, |
7e12652e JR |
30 | + NULL); |
31 | + if (ret) | |
32 | + krb5_err (context, 1, ret, "krb5_make_principal"); | |
33 | + pattern.client = principal; | |
34 | + | |
35 | + ret = krb5_cc_retrieve_cred (context, ccache, 0, &pattern, &creds); | |
36 | + krb5_free_principal (context, pattern.server); | |
37 | + if (ret) { | |
38 | + if (ret == KRB5_CC_END) | |
39 | + return 1; | |
40 | + krb5_err (context, 1, ret, "krb5_cc_retrieve_cred"); | |
41 | + } | |
42 | + | |
43 | + found = creds.times.endtime > time(NULL); | |
44 | + | |
45 | + krb5_free_cred_contents (context, &creds); | |
46 | +#else | |
47 | + krb5_cc_cursor cur; | |
48 | + | |
49 | ret = krb5_cc_start_seq_get(context, ccache, &cur); | |
50 | if (ret) | |
51 | return 0; | |
52 | @@ -949,6 +977,7 @@ | |
53 | krb5_free_cred_contents(context, &creds); | |
54 | } | |
55 | krb5_cc_end_seq_get(context, ccache, &cur); | |
56 | +#endif | |
57 | ||
58 | return found; | |
59 | } | |
60 | @@ -995,6 +1024,9 @@ | |
61 | } | |
62 | krb5_free_principal(context, principal); | |
63 | err_princ: | |
64 | +#ifdef HAVE_HEIMDAL | |
65 | +#define KRB5_TC_OPENCLOSE 0x00000001 | |
66 | +#endif | |
67 | krb5_cc_set_flags(context, ccache, KRB5_TC_OPENCLOSE); | |
68 | krb5_cc_close(context, ccache); | |
69 | err_cache: |