Ejemplo n.º 1
0
KRB5_LIB_FUNCTION krb5_error_code KRB5_LIB_CALL
krb5_set_config_files(krb5_context context, char **filenames)
{
    krb5_error_code ret;
    krb5_config_binding *tmp = NULL;
    while(filenames != NULL && *filenames != NULL && **filenames != '\0') {
	ret = krb5_config_parse_file_multi(context, *filenames, &tmp);
	if(ret != 0 && ret != ENOENT && ret != EACCES && ret != EPERM) {
	    krb5_config_file_free(context, tmp);
	    return ret;
	}
	filenames++;
    }
#if 0
    /* with this enabled and if there are no config files, Kerberos is
       considererd disabled */
    if(tmp == NULL)
	return ENXIO;
#endif

#ifdef _WIN32
    _krb5_load_config_from_registry(context, &tmp);
#endif

    krb5_config_file_free(context, context->cf);
    context->cf = tmp;
    ret = init_context_from_config_file(context);
    return ret;
}
Ejemplo n.º 2
0
krb5_error_code
krb5_reload_config(krb5_context context,
                   unsigned flags,
                   krb5_boolean *reread)
{
    krb5_error_code ret;
    krb5_config_binding *tmp = NULL;
    unsigned i;

    /**
     * If function returns a failure, and reread is used, value of
     * reread is FALSE.
     */

    if (reread)
        *reread = FALSE;

    if (_krb5_need_to_reload(context) == FALSE)
        return 0;

    if (context->config_files == NULL)
        return 0;

    for (i = 0; context->config_files[i]; i++) {
        ret = krb5_config_parse_file_multi(context,
                                           context->config_files[i],
                                           &tmp);
        if (ret != 0 && ret != ENOENT && ret != EACCES && ret != EPERM && ret != KRB5_CONFIG_BADFORMAT) {
            krb5_config_file_free(context, tmp);
            return ret;
        }
    }

    if (reread)
        *reread = TRUE;

    krb5_config_file_free(context, context->cf);
    context->cf = tmp;

    return init_context_from_config_file(context);
}