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 106563 : 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 106563 : if(appname == NULL)
43 105779 : appname = getprogname();
44 :
45 106563 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
46 : "libdefaults", option, NULL);
47 106563 : if(realm != NULL)
48 72371 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
49 : "realms", realm, option, NULL);
50 :
51 106563 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
52 : "appdefaults",
53 : option,
54 : NULL);
55 106563 : if(realm != NULL)
56 72371 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
57 : "appdefaults",
58 : realm,
59 : option,
60 : NULL);
61 106563 : if(appname != NULL) {
62 106563 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
63 : "appdefaults",
64 : appname,
65 : option,
66 : NULL);
67 106563 : if(realm != NULL)
68 72371 : def_val = krb5_config_get_bool_default(context, NULL, def_val,
69 : "appdefaults",
70 : appname,
71 : realm,
72 : option,
73 : NULL);
74 : }
75 106563 : *ret_val = def_val;
76 106563 : }
77 :
78 : KRB5_LIB_FUNCTION void KRB5_LIB_CALL
79 23090 : 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 23090 : if(appname == NULL)
84 22606 : appname = getprogname();
85 :
86 23090 : def_val = krb5_config_get_string_default(context, NULL, def_val,
87 : "libdefaults", option, NULL);
88 23090 : if(realm != NULL)
89 468 : def_val = krb5_config_get_string_default(context, NULL, def_val,
90 : "realms", realm, option, NULL);
91 :
92 23090 : def_val = krb5_config_get_string_default(context, NULL, def_val,
93 : "appdefaults",
94 : option,
95 : NULL);
96 23090 : 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 23090 : if(appname != NULL) {
103 23090 : def_val = krb5_config_get_string_default(context, NULL, def_val,
104 : "appdefaults",
105 : appname,
106 : option,
107 : NULL);
108 23090 : 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 23090 : if(def_val != NULL)
117 11660 : *ret_val = strdup(def_val);
118 : else
119 11430 : *ret_val = NULL;
120 23090 : }
121 :
122 : KRB5_LIB_FUNCTION void KRB5_LIB_CALL
123 22854 : 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 22854 : krb5_appdefault_string(context, appname, realm, option, NULL, &val);
131 22854 : if (val == NULL) {
132 11427 : *ret_val = def_val;
133 11427 : return;
134 : }
135 11427 : if (krb5_string_to_deltat(val, &t))
136 0 : *ret_val = def_val;
137 : else
138 11427 : *ret_val = t;
139 11427 : free(val);
140 : }
|