Line data Source code
1 : /*
2 : * Copyright (c) 2000 - 2001 Kungliga Tekniska Högskolan
3 : * (Royal Institute of Technology, Stockholm, Sweden).
4 : * All rights reserved.
5 : *
6 : * Redistribution and use in source and binary forms, with or without
7 : * modification, are permitted provided that the following conditions
8 : * are met:
9 : *
10 : * 1. Redistributions of source code must retain the above copyright
11 : * notice, this list of conditions and the following disclaimer.
12 : *
13 : * 2. Redistributions in binary form must reproduce the above copyright
14 : * notice, this list of conditions and the following disclaimer in the
15 : * documentation and/or other materials provided with the distribution.
16 : *
17 : * 3. Neither the name of the Institute nor the names of its contributors
18 : * may be used to endorse or promote products derived from this software
19 : * without specific prior written permission.
20 : *
21 : * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
22 : * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 : * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 : * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
25 : * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 : * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 : * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 : * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 : * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 : * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 : * SUCH DAMAGE.
32 : */
33 :
34 : #include "krb5_locl.h"
35 :
36 : KRB5_LIB_FUNCTION void KRB5_LIB_CALL
37 108641 : krb5_appdefault_boolean(krb5_context context, const char *appname,
38 : krb5_const_realm realm, const char *option,
39 : krb5_boolean def_val, krb5_boolean *ret_val)
40 : {
41 :
42 108641 : if(appname == NULL)
43 107857 : appname = getprogname();
44 :
45 108641 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
46 : "libdefaults", option, NULL);
47 108641 : if(realm != NULL)
48 72587 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
49 : "realms", realm, option, NULL);
50 :
51 108641 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
52 : "appdefaults",
53 : option,
54 : NULL);
55 108641 : if(realm != NULL)
56 72587 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
57 : "appdefaults",
58 : realm,
59 : option,
60 : NULL);
61 108641 : if(appname != NULL) {
62 108641 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
63 : "appdefaults",
64 : appname,
65 : option,
66 : NULL);
67 108641 : if(realm != NULL)
68 72587 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
69 : "appdefaults",
70 : appname,
71 : realm,
72 : option,
73 : NULL);
74 : }
75 108641 : *ret_val = def_val;
76 108641 : }
77 :
78 : KRB5_LIB_FUNCTION void KRB5_LIB_CALL
79 24328 : krb5_appdefault_string(krb5_context context, const char *appname,
80 : krb5_const_realm realm, const char *option,
81 : const char *def_val, char **ret_val)
82 : {
83 24328 : if(appname == NULL)
84 23844 : appname = getprogname();
85 :
86 24328 : def_val = krb5_config_get_string_default(context, NULL, def_val,
87 : "libdefaults", option, NULL);
88 24328 : if(realm != NULL)
89 468 : def_val = krb5_config_get_string_default(context, NULL, def_val,
90 : "realms", realm, option, NULL);
91 :
92 24328 : def_val = krb5_config_get_string_default(context, NULL, def_val,
93 : "appdefaults",
94 : option,
95 : NULL);
96 24328 : if(realm != NULL)
97 468 : def_val = krb5_config_get_string_default(context, NULL, def_val,
98 : "appdefaults",
99 : realm,
100 : option,
101 : NULL);
102 24328 : if(appname != NULL) {
103 24328 : def_val = krb5_config_get_string_default(context, NULL, def_val,
104 : "appdefaults",
105 : appname,
106 : option,
107 : NULL);
108 24328 : if(realm != NULL)
109 468 : def_val = krb5_config_get_string_default(context, NULL, def_val,
110 : "appdefaults",
111 : appname,
112 : realm,
113 : option,
114 : NULL);
115 : }
116 24328 : if(def_val != NULL)
117 12279 : *ret_val = strdup(def_val);
118 : else
119 12049 : *ret_val = NULL;
120 24328 : }
121 :
122 : KRB5_LIB_FUNCTION void KRB5_LIB_CALL
123 24092 : krb5_appdefault_time(krb5_context context, const char *appname,
124 : krb5_const_realm realm, const char *option,
125 : time_t def_val, time_t *ret_val)
126 : {
127 1170 : krb5_deltat t;
128 1170 : char *val;
129 :
130 24092 : krb5_appdefault_string(context, appname, realm, option, NULL, &val);
131 24092 : if (val == NULL) {
132 12046 : *ret_val = def_val;
133 12046 : return;
134 : }
135 12046 : if (krb5_string_to_deltat(val, &t))
136 0 : *ret_val = def_val;
137 : else
138 12046 : *ret_val = t;
139 12046 : free(val);
140 : }
|