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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -80,7 +80,8 @@ _kadm5_c_init_context(kadm5_client_context **ctx,
if(params->mask & KADM5_CONFIG_ADMIN_SERVER) if(params->mask & KADM5_CONFIG_ADMIN_SERVER)
(*ctx)->admin_server = strdup(params->admin_server); (*ctx)->admin_server = strdup(params->admin_server);
else{ else{
const char *h = krb5_config_get_string(context->cf, const char *h = krb5_config_get_string(context,
NULL,
"realms", "realms",
(*ctx)->realm, (*ctx)->realm,
"admin_server", "admin_server",

View File

@@ -359,7 +359,8 @@ krb5_config_file_free (krb5_config_section *s)
} }
const void * 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, krb5_config_binding **pointer,
int type, int type,
...) ...)
@@ -368,13 +369,14 @@ krb5_config_get_next (krb5_config_section *c,
va_list args; va_list args;
va_start(args, type); 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); va_end(args);
return ret; return ret;
} }
const void * 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, krb5_config_binding **pointer,
int type, int type,
va_list args) va_list args)
@@ -386,7 +388,7 @@ krb5_config_vget_next (krb5_config_section *c,
return NULL; return NULL;
if (*pointer == NULL) { if (*pointer == NULL) {
b = c; b = (c != NULL) ? c : context->cf;
p = va_arg(args, const char *); p = va_arg(args, const char *);
if (p == NULL) if (p == NULL)
return NULL; return NULL;
@@ -418,7 +420,8 @@ krb5_config_vget_next (krb5_config_section *c,
} }
const void * const void *
krb5_config_get (krb5_config_section *c, krb5_config_get (krb5_context context,
krb5_config_section *c,
int type, int type,
...) ...)
{ {
@@ -426,97 +429,121 @@ krb5_config_get (krb5_config_section *c,
va_list args; va_list args;
va_start(args, type); va_start(args, type);
ret = krb5_config_vget (c, type, args); ret = krb5_config_vget (context, c, type, args);
va_end(args); va_end(args);
return ret; return ret;
} }
const void * const void *
krb5_config_vget (krb5_config_section *c, krb5_config_vget (krb5_context context,
krb5_config_section *c,
int type, int type,
va_list args) va_list args)
{ {
krb5_config_binding *foo = NULL; 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 * 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; const krb5_config_binding *ret;
va_list args; va_list args;
va_start(args, c); va_start(args, c);
ret = krb5_config_vget_list (c, args); ret = krb5_config_vget_list (context, c, args);
va_end(args); va_end(args);
return ret; return ret;
} }
const krb5_config_binding * 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) va_list args)
{ {
return krb5_config_vget (c, krb5_config_list, args); return krb5_config_vget (context, c, krb5_config_list, args);
} }
const char * const char *
krb5_config_get_string (krb5_config_section *c, krb5_config_get_string (krb5_context context,
krb5_config_section *c,
...) ...)
{ {
const char *ret; const char *ret;
va_list args; va_list args;
va_start(args, c); va_start(args, c);
ret = krb5_config_vget_string (c, args); ret = krb5_config_vget_string (context, c, args);
va_end(args); va_end(args);
return ret; return ret;
} }
const char * const char *
krb5_config_vget_string (krb5_config_section *c, krb5_config_vget_string (krb5_context context,
krb5_config_section *c,
va_list args) va_list args)
{ {
return krb5_config_vget (c, krb5_config_string, args); return krb5_config_vget (context, c, krb5_config_string, args);
} }
char ** char **
krb5_config_vget_strings(krb5_config_section *c, krb5_config_vget_strings(krb5_context context,
krb5_config_section *c,
va_list args) va_list args)
{ {
char **strings = NULL; char **strings = NULL;
int nstr = 0; int nstr = 0;
krb5_config_binding *b = NULL; krb5_config_binding *b = NULL;
const char *p; 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 *tmp = strdup(p);
char *pos = NULL; char *pos = NULL;
char *s; char *s;
if(tmp == NULL)
goto cleanup;
s = strtok_r(tmp, " \t", &pos); s = strtok_r(tmp, " \t", &pos);
while(s){ 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); strings[nstr] = strdup(s);
nstr++; nstr++;
if(strings[nstr-1] == NULL)
goto cleanup;
s = strtok_r(NULL, " \t", &pos); s = strtok_r(NULL, " \t", &pos);
} }
free(tmp); free(tmp);
} }
if(nstr){ 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; strings[nstr] = NULL;
} }
return strings; return strings;
cleanup:
while(nstr--)
free(strings[nstr]);
free(strings);
return NULL;
} }
char** char**
krb5_config_get_strings(krb5_config_section *c, krb5_config_get_strings(krb5_context context,
krb5_config_section *c,
...) ...)
{ {
va_list ap; va_list ap;
char **ret; char **ret;
va_start(ap, c); va_start(ap, c);
ret = krb5_config_vget_strings(c, ap); ret = krb5_config_vget_strings(context, c, ap);
va_end(ap); va_end(ap);
return ret; return ret;
} }
@@ -533,37 +560,42 @@ krb5_config_free_strings(char **strings)
} }
krb5_boolean krb5_boolean
krb5_config_vget_bool (krb5_config_section *c, krb5_config_vget_bool (krb5_context context,
krb5_config_section *c,
va_list args) va_list args)
{ {
const char *str; const char *str;
str = krb5_config_vget_string (c, args); str = krb5_config_vget_string (context, c, args);
if(str == NULL) if(str == NULL)
return FALSE; 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 TRUE;
return FALSE; return FALSE;
} }
krb5_boolean krb5_boolean
krb5_config_get_bool (krb5_config_section *c, krb5_config_get_bool (krb5_context context,
krb5_config_section *c,
...) ...)
{ {
va_list ap; va_list ap;
krb5_boolean ret; krb5_boolean ret;
va_start(ap, c); va_start(ap, c);
ret = krb5_config_vget_bool(c, ap); ret = krb5_config_vget_bool(context, c, ap);
va_end(ap); va_end(ap);
return ret; return ret;
} }
int int
krb5_config_vget_time (krb5_config_section *c, krb5_config_vget_time (krb5_context context,
krb5_config_section *c,
va_list args) va_list args)
{ {
const char *str; const char *str;
str = krb5_config_vget_string (c, args); str = krb5_config_vget_string (context, c, args);
if (str == NULL) if (str == NULL)
return -1; return -1;
else else
@@ -571,25 +603,27 @@ krb5_config_vget_time (krb5_config_section *c,
} }
int int
krb5_config_get_time (krb5_config_section *c, krb5_config_get_time (krb5_context context,
krb5_config_section *c,
...) ...)
{ {
int ret; int ret;
va_list args; va_list args;
va_start(args, c); va_start(args, c);
ret = krb5_config_vget_time (c, args); ret = krb5_config_vget_time (context, c, args);
va_end(args); va_end(args);
return ret; return ret;
} }
int int
krb5_config_vget_int (krb5_config_section *c, krb5_config_vget_int (krb5_context context,
krb5_config_section *c,
va_list args) va_list args)
{ {
const char *str; const char *str;
str = krb5_config_vget_string (c, args); str = krb5_config_vget_string (context, c, args);
if (str == NULL) if (str == NULL)
return -1; return -1;
else { else {
@@ -605,14 +639,15 @@ krb5_config_vget_int (krb5_config_section *c,
} }
int int
krb5_config_get_int (krb5_config_section *c, krb5_config_get_int (krb5_context context,
krb5_config_section *c,
...) ...)
{ {
int ret; int ret;
va_list args; va_list args;
va_start(args, c); va_start(args, c);
ret = krb5_config_vget_int (c, args); ret = krb5_config_vget_int (context, c, args);
va_end(args); va_end(args);
return ret; return ret;
} }
@@ -685,17 +720,17 @@ main(void)
printf ("%d\n", krb5_config_parse_file ("/etc/krb5.conf", &c)); printf ("%d\n", krb5_config_parse_file ("/etc/krb5.conf", &c));
print_config (stdout, c); print_config (stdout, c);
printf ("[libdefaults]ticket_lifetime = %s\n", printf ("[libdefaults]ticket_lifetime = %s\n",
krb5_config_get_string (c, krb5_config_get_string (context, c,
"libdefaults", "libdefaults",
"ticket_lifetime", "ticket_lifetime",
NULL)); NULL));
printf ("[realms]foo = %s\n", printf ("[realms]foo = %s\n",
krb5_config_get_string (c, krb5_config_get_string (context, c,
"realms", "realms",
"foo", "foo",
NULL)); NULL));
printf ("[realms]ATHENA.MIT.EDU/v4_instance_convert/lithium = %s\n", printf ("[realms]ATHENA.MIT.EDU/v4_instance_convert/lithium = %s\n",
krb5_config_get_string (c, krb5_config_get_string (context, c,
"realms", "realms",
"ATHENA.MIT.EDU", "ATHENA.MIT.EDU",
"v4_instance_convert", "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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -60,17 +60,17 @@ krb5_init_context(krb5_context *context)
else else
krb5_config_parse_file (krb5_config_file, &p->cf); krb5_config_parse_file (krb5_config_file, &p->cf);
p->max_skew = 5 * 60; 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) if (val >= 0)
p->max_skew = val; p->max_skew = val;
p->kdc_timeout = 3; 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) if(val >= 0)
p->kdc_timeout = val; p->kdc_timeout = val;
p->max_retries = 3; 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) if (val >= 0)
p->max_retries = val; 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -87,7 +87,7 @@ krb5_get_host_realm(krb5_context context,
(*realms)[0] = NULL; (*realms)[0] = NULL;
(*realms)[1] = NULL; (*realms)[1] = NULL;
for(l = krb5_config_get_list (context->cf, for(l = krb5_config_get_list (context, NULL,
"domain_realm", "domain_realm",
NULL); NULL);
l; 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -48,14 +48,14 @@ get_config_time (krb5_context context,
{ {
int ret; int ret;
ret = krb5_config_get_time (context->cf, ret = krb5_config_get_time (context, NULL,
"realms", "realms",
realm, realm,
name, name,
NULL); NULL);
if (ret >= 0) if (ret >= 0)
return ret; return ret;
ret = krb5_config_get_time (context->cf, ret = krb5_config_get_time (context, NULL,
"libdefaults", "libdefaults",
name, name,
NULL); NULL);
@@ -69,12 +69,14 @@ get_config_bool (krb5_context context,
char *realm, char *realm,
char *name) char *name)
{ {
return krb5_config_get_bool (context->cf, return krb5_config_get_bool (context,
NULL,
"realms", "realms",
realm, realm,
name, name,
NULL) NULL)
|| krb5_config_get_bool (context->cf, || krb5_config_get_bool (context,
NULL,
"libdefaults", "libdefaults",
name, name,
NULL); 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -325,9 +325,9 @@ krb5_openlog(krb5_context context,
if(ret) if(ret)
return 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) 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){ if(p){
for(q = p; *q; q++) for(q = p; *q; q++)
ret = krb5_addlog_dest(context, *fac, *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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -476,15 +476,15 @@ krb5_425_conv_principal_ext(krb5_context context,
instance = NULL; instance = NULL;
goto no_host; 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); "v4_name_convert", "host", name, NULL);
if(p == 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); "v4_name_convert", "host", name, NULL);
if(p == NULL) if(p == NULL)
goto no_host; goto no_host;
name = p; 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); "v4_instance_convert", instance, NULL);
if(p){ if(p){
instance = p; instance = p;
@@ -512,7 +512,7 @@ krb5_425_conv_principal_ext(krb5_context context,
} }
{ {
char **domains, **d; char **domains, **d;
domains = krb5_config_get_strings(context->cf, "realms", realm, domains = krb5_config_get_strings(context, NULL, "realms", realm,
"v4_domains", NULL); "v4_domains", NULL);
for(d = domains; d && *d; d++){ for(d = domains; d && *d; d++){
snprintf(host, sizeof(host), "%s.%s", instance, *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); "default_domain", NULL);
if(p == NULL){ if(p == NULL){
/* should this be an error or should it silently /* 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); krb5_free_principal(context, pr);
return HEIM_ERR_V4_PRINC_NO_CONV; return HEIM_ERR_V4_PRINC_NO_CONV;
no_host: no_host:
p = krb5_config_get_string(context->cf, p = krb5_config_get_string(context, NULL,
"realms", "realms",
realm, realm,
"v4_name_convert", "v4_name_convert",
@@ -553,7 +553,7 @@ no_host:
name, name,
NULL); NULL);
if(p == NULL) if(p == NULL)
p = krb5_config_get_string(context->cf, p = krb5_config_get_string(context, NULL,
"libdefaults", "libdefaults",
"v4_name_convert", "v4_name_convert",
"plain", "plain",
@@ -578,7 +578,8 @@ krb5_425_conv_principal(krb5_context context,
const char *realm, const char *realm,
krb5_principal *princ) krb5_principal *princ)
{ {
krb5_boolean resolve = krb5_config_get_bool(context->cf, krb5_boolean resolve = krb5_config_get_bool(context,
NULL,
"libdefaults", "libdefaults",
"v4_instance_resolve", "v4_instance_resolve",
NULL); NULL);
@@ -593,14 +594,16 @@ name_convert(krb5_context context, const char *name, const char *realm,
const char *section) const char *section)
{ {
const krb5_config_binding *l; const krb5_config_binding *l;
l = krb5_config_get_list (context->cf, l = krb5_config_get_list (context,
NULL,
"realms", "realms",
realm, realm,
"v4_name_convert", "v4_name_convert",
section, section,
NULL); NULL);
if(l == NULL) if(l == NULL)
l = krb5_config_get_list (context->cf, l = krb5_config_get_list (context,
NULL,
"libdefaults", "libdefaults",
"v4_name_convert", "v4_name_convert",
section, 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -49,7 +49,7 @@ krb5_set_default_realm(krb5_context context,
char **realms = NULL; char **realms = NULL;
if (realm == NULL){ if (realm == NULL){
foo = krb5_config_get_string (context->cf, foo = krb5_config_get_string (context, NULL,
"libdefaults", "libdefaults",
"default_realm", "default_realm",
NULL); 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). * (Royal Institute of Technology, Stockholm, Sweden).
* All rights reserved. * All rights reserved.
* *
@@ -155,7 +155,8 @@ krb5_verify_init_creds(krb5_context context,
if (ret) { if (ret) {
if (((options->flags & KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL) && if (((options->flags & KRB5_VERIFY_INIT_CREDS_OPT_AP_REQ_NOFAIL) &&
options->ap_req_nofail == 1) || options->ap_req_nofail == 1) ||
krb5_config_get_bool (context->cf, krb5_config_get_bool (context,
NULL,
"libdefaults", "libdefaults",
"verify_ap_req_nofail", "verify_ap_req_nofail",
NULL)) { NULL)) {