Add context to all krb5_config_*get_*.

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4256 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Johan Danielsson
1998-01-03 21:14:31 +00:00
parent bc676392d6
commit 46569a331b
9 changed files with 111 additions and 69 deletions

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -80,7 +80,8 @@ _kadm5_c_init_context(kadm5_client_context **ctx,
if(params->mask & KADM5_CONFIG_ADMIN_SERVER)
(*ctx)->admin_server = strdup(params->admin_server);
else{
const char *h = krb5_config_get_string(context->cf,
const char *h = krb5_config_get_string(context,
NULL,
"realms",
(*ctx)->realm,
"admin_server",

View File

@@ -359,7 +359,8 @@ krb5_config_file_free (krb5_config_section *s)
}
const void *
krb5_config_get_next (krb5_config_section *c,
krb5_config_get_next (krb5_context context,
krb5_config_section *c,
krb5_config_binding **pointer,
int type,
...)
@@ -368,13 +369,14 @@ krb5_config_get_next (krb5_config_section *c,
va_list args;
va_start(args, type);
ret = krb5_config_vget_next (c, pointer, type, args);
ret = krb5_config_vget_next (context, c, pointer, type, args);
va_end(args);
return ret;
}
const void *
krb5_config_vget_next (krb5_config_section *c,
krb5_config_vget_next (krb5_context context,
krb5_config_section *c,
krb5_config_binding **pointer,
int type,
va_list args)
@@ -386,7 +388,7 @@ krb5_config_vget_next (krb5_config_section *c,
return NULL;
if (*pointer == NULL) {
b = c;
b = (c != NULL) ? c : context->cf;
p = va_arg(args, const char *);
if (p == NULL)
return NULL;
@@ -418,7 +420,8 @@ krb5_config_vget_next (krb5_config_section *c,
}
const void *
krb5_config_get (krb5_config_section *c,
krb5_config_get (krb5_context context,
krb5_config_section *c,
int type,
...)
{
@@ -426,97 +429,121 @@ krb5_config_get (krb5_config_section *c,
va_list args;
va_start(args, type);
ret = krb5_config_vget (c, type, args);
ret = krb5_config_vget (context, c, type, args);
va_end(args);
return ret;
}
const void *
krb5_config_vget (krb5_config_section *c,
krb5_config_vget (krb5_context context,
krb5_config_section *c,
int type,
va_list args)
{
krb5_config_binding *foo = NULL;
return krb5_config_vget_next (c, &foo, type, args);
return krb5_config_vget_next (context, c, &foo, type, args);
}
const krb5_config_binding *
krb5_config_get_list (krb5_config_section *c,
krb5_config_get_list (krb5_context context,
krb5_config_section *c,
...)
{
const krb5_config_binding *ret;
va_list args;
va_start(args, c);
ret = krb5_config_vget_list (c, args);
ret = krb5_config_vget_list (context, c, args);
va_end(args);
return ret;
}
const krb5_config_binding *
krb5_config_vget_list (krb5_config_section *c,
krb5_config_vget_list (krb5_context context,
krb5_config_section *c,
va_list args)
{
return krb5_config_vget (c, krb5_config_list, args);
return krb5_config_vget (context, c, krb5_config_list, args);
}
const char *
krb5_config_get_string (krb5_config_section *c,
krb5_config_get_string (krb5_context context,
krb5_config_section *c,
...)
{
const char *ret;
va_list args;
va_start(args, c);
ret = krb5_config_vget_string (c, args);
ret = krb5_config_vget_string (context, c, args);
va_end(args);
return ret;
}
const char *
krb5_config_vget_string (krb5_config_section *c,
krb5_config_vget_string (krb5_context context,
krb5_config_section *c,
va_list args)
{
return krb5_config_vget (c, krb5_config_string, args);
return krb5_config_vget (context, c, krb5_config_string, args);
}
char **
krb5_config_vget_strings(krb5_config_section *c,
krb5_config_vget_strings(krb5_context context,
krb5_config_section *c,
va_list args)
{
char **strings = NULL;
int nstr = 0;
krb5_config_binding *b = NULL;
const char *p;
while((p = krb5_config_vget_next(c, &b, krb5_config_string, args))){
while((p = krb5_config_vget_next(context, c, &b,
krb5_config_string, args))){
char *tmp = strdup(p);
char *pos = NULL;
char *s;
if(tmp == NULL)
goto cleanup;
s = strtok_r(tmp, " \t", &pos);
while(s){
strings = realloc(strings, (nstr + 1) * sizeof(*strings));
char **tmp = realloc(strings, (nstr + 1) * sizeof(*strings));
if(tmp == NULL)
goto cleanup;
strings = tmp;
strings[nstr] = strdup(s);
nstr++;
if(strings[nstr-1] == NULL)
goto cleanup;
s = strtok_r(NULL, " \t", &pos);
}
free(tmp);
}
if(nstr){
strings = realloc(strings, (nstr + 1) * sizeof(*strings));
char **tmp = realloc(strings, (nstr + 1) * sizeof(*strings));
if(strings == NULL)
goto cleanup;
strings = tmp;
strings[nstr] = NULL;
}
return strings;
cleanup:
while(nstr--)
free(strings[nstr]);
free(strings);
return NULL;
}
char**
krb5_config_get_strings(krb5_config_section *c,
krb5_config_get_strings(krb5_context context,
krb5_config_section *c,
...)
{
va_list ap;
char **ret;
va_start(ap, c);
ret = krb5_config_vget_strings(c, ap);
ret = krb5_config_vget_strings(context, c, ap);
va_end(ap);
return ret;
}
@@ -533,37 +560,42 @@ krb5_config_free_strings(char **strings)
}
krb5_boolean
krb5_config_vget_bool (krb5_config_section *c,
krb5_config_vget_bool (krb5_context context,
krb5_config_section *c,
va_list args)
{
const char *str;
str = krb5_config_vget_string (c, args);
str = krb5_config_vget_string (context, c, args);
if(str == NULL)
return FALSE;
if(strcmp(str, "yes") == 0 || strcmp(str, "true") == 0 || atoi(str))
if(strcasecmp(str, "yes") == 0 ||
strcasecmp(str, "true") == 0 ||
atoi(str))
return TRUE;
return FALSE;
}
krb5_boolean
krb5_config_get_bool (krb5_config_section *c,
krb5_config_get_bool (krb5_context context,
krb5_config_section *c,
...)
{
va_list ap;
krb5_boolean ret;
va_start(ap, c);
ret = krb5_config_vget_bool(c, ap);
ret = krb5_config_vget_bool(context, c, ap);
va_end(ap);
return ret;
}
int
krb5_config_vget_time (krb5_config_section *c,
krb5_config_vget_time (krb5_context context,
krb5_config_section *c,
va_list args)
{
const char *str;
str = krb5_config_vget_string (c, args);
str = krb5_config_vget_string (context, c, args);
if (str == NULL)
return -1;
else
@@ -571,25 +603,27 @@ krb5_config_vget_time (krb5_config_section *c,
}
int
krb5_config_get_time (krb5_config_section *c,
krb5_config_get_time (krb5_context context,
krb5_config_section *c,
...)
{
int ret;
va_list args;
va_start(args, c);
ret = krb5_config_vget_time (c, args);
ret = krb5_config_vget_time (context, c, args);
va_end(args);
return ret;
}
int
krb5_config_vget_int (krb5_config_section *c,
krb5_config_vget_int (krb5_context context,
krb5_config_section *c,
va_list args)
{
const char *str;
str = krb5_config_vget_string (c, args);
str = krb5_config_vget_string (context, c, args);
if (str == NULL)
return -1;
else {
@@ -605,14 +639,15 @@ krb5_config_vget_int (krb5_config_section *c,
}
int
krb5_config_get_int (krb5_config_section *c,
krb5_config_get_int (krb5_context context,
krb5_config_section *c,
...)
{
int ret;
va_list args;
va_start(args, c);
ret = krb5_config_vget_int (c, args);
ret = krb5_config_vget_int (context, c, args);
va_end(args);
return ret;
}
@@ -685,17 +720,17 @@ main(void)
printf ("%d\n", krb5_config_parse_file ("/etc/krb5.conf", &c));
print_config (stdout, c);
printf ("[libdefaults]ticket_lifetime = %s\n",
krb5_config_get_string (c,
krb5_config_get_string (context, c,
"libdefaults",
"ticket_lifetime",
NULL));
printf ("[realms]foo = %s\n",
krb5_config_get_string (c,
krb5_config_get_string (context, c,
"realms",
"foo",
NULL));
printf ("[realms]ATHENA.MIT.EDU/v4_instance_convert/lithium = %s\n",
krb5_config_get_string (c,
krb5_config_get_string (context, c,
"realms",
"ATHENA.MIT.EDU",
"v4_instance_convert",

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -60,17 +60,17 @@ krb5_init_context(krb5_context *context)
else
krb5_config_parse_file (krb5_config_file, &p->cf);
p->max_skew = 5 * 60;
val = krb5_config_get_time (p->cf, "libdefaults", "clockskew", NULL);
val = krb5_config_get_time (p, NULL, "libdefaults", "clockskew", NULL);
if (val >= 0)
p->max_skew = val;
p->kdc_timeout = 3;
val = krb5_config_get_time (p->cf, "libdefaults", "kdc_timeout", NULL);
val = krb5_config_get_time (p, NULL, "libdefaults", "kdc_timeout", NULL);
if(val >= 0)
p->kdc_timeout = val;
p->max_retries = 3;
val = krb5_config_get_int (p->cf, "libdefaults", "max_retries", NULL);
val = krb5_config_get_int (p, NULL, "libdefaults", "max_retries", NULL);
if (val >= 0)
p->max_retries = val;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -87,7 +87,7 @@ krb5_get_host_realm(krb5_context context,
(*realms)[0] = NULL;
(*realms)[1] = NULL;
for(l = krb5_config_get_list (context->cf,
for(l = krb5_config_get_list (context, NULL,
"domain_realm",
NULL);
l;

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -48,14 +48,14 @@ get_config_time (krb5_context context,
{
int ret;
ret = krb5_config_get_time (context->cf,
ret = krb5_config_get_time (context, NULL,
"realms",
realm,
name,
NULL);
if (ret >= 0)
return ret;
ret = krb5_config_get_time (context->cf,
ret = krb5_config_get_time (context, NULL,
"libdefaults",
name,
NULL);
@@ -69,12 +69,14 @@ get_config_bool (krb5_context context,
char *realm,
char *name)
{
return krb5_config_get_bool (context->cf,
return krb5_config_get_bool (context,
NULL,
"realms",
realm,
name,
NULL)
|| krb5_config_get_bool (context->cf,
|| krb5_config_get_bool (context,
NULL,
"libdefaults",
name,
NULL);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -325,9 +325,9 @@ krb5_openlog(krb5_context context,
if(ret)
return ret;
p = krb5_config_get_strings(context->cf, "logging", program, NULL);
p = krb5_config_get_strings(context, NULL, "logging", program, NULL);
if(p == NULL)
p = krb5_config_get_strings(context->cf, "logging", "default", NULL);
p = krb5_config_get_strings(context, NULL, "logging", "default", NULL);
if(p){
for(q = p; *q; q++)
ret = krb5_addlog_dest(context, *fac, *q);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -476,15 +476,15 @@ krb5_425_conv_principal_ext(krb5_context context,
instance = NULL;
goto no_host;
}
p = krb5_config_get_string(context->cf, "realms", realm,
p = krb5_config_get_string(context, NULL, "realms", realm,
"v4_name_convert", "host", name, NULL);
if(p == NULL)
p = krb5_config_get_string(context->cf, "libdefaults",
p = krb5_config_get_string(context, NULL, "libdefaults",
"v4_name_convert", "host", name, NULL);
if(p == NULL)
goto no_host;
name = p;
p = krb5_config_get_string(context->cf, "realms", realm,
p = krb5_config_get_string(context, NULL, "realms", realm,
"v4_instance_convert", instance, NULL);
if(p){
instance = p;
@@ -512,7 +512,7 @@ krb5_425_conv_principal_ext(krb5_context context,
}
{
char **domains, **d;
domains = krb5_config_get_strings(context->cf, "realms", realm,
domains = krb5_config_get_strings(context, NULL, "realms", realm,
"v4_domains", NULL);
for(d = domains; d && *d; d++){
snprintf(host, sizeof(host), "%s.%s", instance, *d);
@@ -528,7 +528,7 @@ krb5_425_conv_principal_ext(krb5_context context,
}
p = krb5_config_get_string(context->cf, "realms", realm,
p = krb5_config_get_string(context, NULL, "realms", realm,
"default_domain", NULL);
if(p == NULL){
/* should this be an error or should it silently
@@ -545,7 +545,7 @@ krb5_425_conv_principal_ext(krb5_context context,
krb5_free_principal(context, pr);
return HEIM_ERR_V4_PRINC_NO_CONV;
no_host:
p = krb5_config_get_string(context->cf,
p = krb5_config_get_string(context, NULL,
"realms",
realm,
"v4_name_convert",
@@ -553,7 +553,7 @@ no_host:
name,
NULL);
if(p == NULL)
p = krb5_config_get_string(context->cf,
p = krb5_config_get_string(context, NULL,
"libdefaults",
"v4_name_convert",
"plain",
@@ -578,7 +578,8 @@ krb5_425_conv_principal(krb5_context context,
const char *realm,
krb5_principal *princ)
{
krb5_boolean resolve = krb5_config_get_bool(context->cf,
krb5_boolean resolve = krb5_config_get_bool(context,
NULL,
"libdefaults",
"v4_instance_resolve",
NULL);
@@ -593,14 +594,16 @@ name_convert(krb5_context context, const char *name, const char *realm,
const char *section)
{
const krb5_config_binding *l;
l = krb5_config_get_list (context->cf,
l = krb5_config_get_list (context,
NULL,
"realms",
realm,
"v4_name_convert",
section,
NULL);
if(l == NULL)
l = krb5_config_get_list (context->cf,
l = krb5_config_get_list (context,
NULL,
"libdefaults",
"v4_name_convert",
section,

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -49,7 +49,7 @@ krb5_set_default_realm(krb5_context context,
char **realms = NULL;
if (realm == NULL){
foo = krb5_config_get_string (context->cf,
foo = krb5_config_get_string (context, NULL,
"libdefaults",
"default_realm",
NULL);

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 1997 Kungliga Tekniska H<>gskolan
* Copyright (c) 1997, 1998 Kungliga Tekniska H<>gskolan
* (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved.
*
@@ -155,7 +155,8 @@ krb5_verify_init_creds(krb5_context context,
if (ret) {
if (((options->flags & KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL) &&
options->ap_req_nofail == 1) ||
krb5_config_get_bool (context->cf,
krb5_config_get_bool (context,
NULL,
"libdefaults",
"verify_ap_req_nofail",
NULL)) {