1*ae771770SStanislav Sedov /*********************************************************************** 2*ae771770SStanislav Sedov * Copyright (c) 2010, Secure Endpoints Inc. 3*ae771770SStanislav Sedov * All rights reserved. 4*ae771770SStanislav Sedov * 5*ae771770SStanislav Sedov * Redistribution and use in source and binary forms, with or without 6*ae771770SStanislav Sedov * modification, are permitted provided that the following conditions 7*ae771770SStanislav Sedov * are met: 8*ae771770SStanislav Sedov * 9*ae771770SStanislav Sedov * - Redistributions of source code must retain the above copyright 10*ae771770SStanislav Sedov * notice, this list of conditions and the following disclaimer. 11*ae771770SStanislav Sedov * 12*ae771770SStanislav Sedov * - Redistributions in binary form must reproduce the above copyright 13*ae771770SStanislav Sedov * notice, this list of conditions and the following disclaimer in 14*ae771770SStanislav Sedov * the documentation and/or other materials provided with the 15*ae771770SStanislav Sedov * distribution. 16*ae771770SStanislav Sedov * 17*ae771770SStanislav Sedov * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 18*ae771770SStanislav Sedov * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 19*ae771770SStanislav Sedov * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 20*ae771770SStanislav Sedov * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 21*ae771770SStanislav Sedov * COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 22*ae771770SStanislav Sedov * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 23*ae771770SStanislav Sedov * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 24*ae771770SStanislav Sedov * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25*ae771770SStanislav Sedov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26*ae771770SStanislav Sedov * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27*ae771770SStanislav Sedov * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 28*ae771770SStanislav Sedov * OF THE POSSIBILITY OF SUCH DAMAGE. 29*ae771770SStanislav Sedov * 30*ae771770SStanislav Sedov **********************************************************************/ 31*ae771770SStanislav Sedov 32*ae771770SStanislav Sedov #include "krb5_locl.h" 33*ae771770SStanislav Sedov #include "ccache_plugin.h" 34*ae771770SStanislav Sedov #ifdef HAVE_DLFCN_H 35*ae771770SStanislav Sedov #include <dlfcn.h> 36*ae771770SStanislav Sedov #endif 37*ae771770SStanislav Sedov #include <assert.h> 38*ae771770SStanislav Sedov 39*ae771770SStanislav Sedov krb5_error_code 40*ae771770SStanislav Sedov _krb5_load_ccache_plugins(krb5_context context) 41*ae771770SStanislav Sedov { 42*ae771770SStanislav Sedov struct krb5_plugin * plist = NULL; 43*ae771770SStanislav Sedov struct krb5_plugin *p; 44*ae771770SStanislav Sedov krb5_error_code code; 45*ae771770SStanislav Sedov 46*ae771770SStanislav Sedov code = _krb5_plugin_find(context, PLUGIN_TYPE_DATA, KRB5_PLUGIN_CCACHE, 47*ae771770SStanislav Sedov &plist); 48*ae771770SStanislav Sedov if (code) 49*ae771770SStanislav Sedov return code; 50*ae771770SStanislav Sedov 51*ae771770SStanislav Sedov for (p = plist; p != NULL; p = _krb5_plugin_get_next(p)) { 52*ae771770SStanislav Sedov krb5_cc_ops * ccops; 53*ae771770SStanislav Sedov krb5_error_code c_load; 54*ae771770SStanislav Sedov 55*ae771770SStanislav Sedov ccops = _krb5_plugin_get_symbol(p); 56*ae771770SStanislav Sedov if (ccops != NULL && ccops->version == KRB5_CC_OPS_VERSION) { 57*ae771770SStanislav Sedov c_load = krb5_cc_register(context, ccops, TRUE); 58*ae771770SStanislav Sedov if (c_load != 0) 59*ae771770SStanislav Sedov code = c_load; 60*ae771770SStanislav Sedov } 61*ae771770SStanislav Sedov } 62*ae771770SStanislav Sedov 63*ae771770SStanislav Sedov _krb5_plugin_free(plist); 64*ae771770SStanislav Sedov 65*ae771770SStanislav Sedov return code; 66*ae771770SStanislav Sedov } 67