/src/samba/third_party/heimdal/lib/krb5/pcache.c
Line | Count | Source |
1 | | /*********************************************************************** |
2 | | * Copyright (c) 2010, Secure Endpoints Inc. |
3 | | * All rights reserved. |
4 | | * |
5 | | * Redistribution and use in source and binary forms, with or without |
6 | | * modification, are permitted provided that the following conditions |
7 | | * are met: |
8 | | * |
9 | | * - Redistributions of source code must retain the above copyright |
10 | | * notice, this list of conditions and the following disclaimer. |
11 | | * |
12 | | * - Redistributions in binary form must reproduce the above copyright |
13 | | * notice, this list of conditions and the following disclaimer in |
14 | | * the documentation and/or other materials provided with the |
15 | | * distribution. |
16 | | * |
17 | | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
18 | | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
19 | | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS |
20 | | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE |
21 | | * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, |
22 | | * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
23 | | * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR |
24 | | * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
25 | | * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, |
26 | | * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
27 | | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED |
28 | | * OF THE POSSIBILITY OF SUCH DAMAGE. |
29 | | * |
30 | | **********************************************************************/ |
31 | | |
32 | | #include "krb5_locl.h" |
33 | | #include "ccache_plugin.h" |
34 | | #ifdef HAVE_DLFCN_H |
35 | | #include <dlfcn.h> |
36 | | #endif |
37 | | #include <assert.h> |
38 | | |
39 | | /* |
40 | | * cc_plugin_register_to_context is executed once per krb5_init_context(). |
41 | | * Its job is to register the plugin's krb5_cc_ops structure with the |
42 | | * krb5_context. |
43 | | */ |
44 | | |
45 | | static krb5_error_code KRB5_LIB_CALL |
46 | | cc_plugin_register_to_context(krb5_context context, const void *plug, void *plugctx, void *userctx) |
47 | 0 | { |
48 | 0 | krb5_cc_ops *ccops = (krb5_cc_ops *)plugctx; |
49 | 0 | krb5_error_code ret; |
50 | |
|
51 | 0 | if (ccops == NULL) |
52 | 0 | return KRB5_PLUGIN_NO_HANDLE; |
53 | | |
54 | 0 | ret = krb5_cc_register(context, ccops, TRUE); |
55 | 0 | if (ret != 0) |
56 | 0 | *((krb5_error_code *)userctx) = ret; |
57 | |
|
58 | 0 | return KRB5_PLUGIN_NO_HANDLE; |
59 | 0 | } |
60 | | |
61 | | static const char *const ccache_plugin_deps[] = { "krb5", NULL }; |
62 | | |
63 | | static const struct heim_plugin_data |
64 | | ccache_plugin_data = { |
65 | | "krb5", |
66 | | KRB5_PLUGIN_CCACHE, |
67 | | 0, |
68 | | ccache_plugin_deps, |
69 | | krb5_get_instance |
70 | | }; |
71 | | |
72 | | KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL |
73 | | _krb5_load_ccache_plugins(krb5_context context) |
74 | 0 | { |
75 | 0 | krb5_error_code userctx = 0; |
76 | |
|
77 | 0 | (void)_krb5_plugin_run_f(context, &ccache_plugin_data, 0, |
78 | 0 | &userctx, cc_plugin_register_to_context); |
79 | |
|
80 | 0 | return userctx; |
81 | 0 | } |