Path: blob/main/crypto/heimdal/lib/krb5/appdefault.c
34878 views
/*1* Copyright (c) 2000 - 2001 Kungliga Tekniska Högskolan2* (Royal Institute of Technology, Stockholm, Sweden).3* All rights reserved.4*5* Redistribution and use in source and binary forms, with or without6* modification, are permitted provided that the following conditions7* are met:8*9* 1. Redistributions of source code must retain the above copyright10* notice, this list of conditions and the following disclaimer.11*12* 2. Redistributions in binary form must reproduce the above copyright13* notice, this list of conditions and the following disclaimer in the14* documentation and/or other materials provided with the distribution.15*16* 3. Neither the name of the Institute nor the names of its contributors17* may be used to endorse or promote products derived from this software18* without specific prior written permission.19*20* THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND21* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE22* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE23* ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE24* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL25* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS26* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)27* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT28* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY29* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF30* SUCH DAMAGE.31*/3233#include "krb5_locl.h"3435KRB5_LIB_FUNCTION void KRB5_LIB_CALL36krb5_appdefault_boolean(krb5_context context, const char *appname,37krb5_const_realm realm, const char *option,38krb5_boolean def_val, krb5_boolean *ret_val)39{4041if(appname == NULL)42appname = getprogname();4344def_val = krb5_config_get_bool_default(context, NULL, def_val,45"libdefaults", option, NULL);46if(realm != NULL)47def_val = krb5_config_get_bool_default(context, NULL, def_val,48"realms", realm, option, NULL);4950def_val = krb5_config_get_bool_default(context, NULL, def_val,51"appdefaults",52option,53NULL);54if(realm != NULL)55def_val = krb5_config_get_bool_default(context, NULL, def_val,56"appdefaults",57realm,58option,59NULL);60if(appname != NULL) {61def_val = krb5_config_get_bool_default(context, NULL, def_val,62"appdefaults",63appname,64option,65NULL);66if(realm != NULL)67def_val = krb5_config_get_bool_default(context, NULL, def_val,68"appdefaults",69appname,70realm,71option,72NULL);73}74*ret_val = def_val;75}7677KRB5_LIB_FUNCTION void KRB5_LIB_CALL78krb5_appdefault_string(krb5_context context, const char *appname,79krb5_const_realm realm, const char *option,80const char *def_val, char **ret_val)81{82if(appname == NULL)83appname = getprogname();8485def_val = krb5_config_get_string_default(context, NULL, def_val,86"libdefaults", option, NULL);87if(realm != NULL)88def_val = krb5_config_get_string_default(context, NULL, def_val,89"realms", realm, option, NULL);9091def_val = krb5_config_get_string_default(context, NULL, def_val,92"appdefaults",93option,94NULL);95if(realm != NULL)96def_val = krb5_config_get_string_default(context, NULL, def_val,97"appdefaults",98realm,99option,100NULL);101if(appname != NULL) {102def_val = krb5_config_get_string_default(context, NULL, def_val,103"appdefaults",104appname,105option,106NULL);107if(realm != NULL)108def_val = krb5_config_get_string_default(context, NULL, def_val,109"appdefaults",110appname,111realm,112option,113NULL);114}115if(def_val != NULL)116*ret_val = strdup(def_val);117else118*ret_val = NULL;119}120121KRB5_LIB_FUNCTION void KRB5_LIB_CALL122krb5_appdefault_time(krb5_context context, const char *appname,123krb5_const_realm realm, const char *option,124time_t def_val, time_t *ret_val)125{126krb5_deltat t;127char *val;128129krb5_appdefault_string(context, appname, realm, option, NULL, &val);130if (val == NULL) {131*ret_val = def_val;132return;133}134if (krb5_string_to_deltat(val, &t))135*ret_val = def_val;136else137*ret_val = t;138free(val);139}140141142