add krb5_425_conv_principal_ext2 that work just like
krb5_425_conv_principal_ext but takes a context variable for the verification function git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15531 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -695,13 +695,15 @@ get_name_conversion(krb5_context context, const char *realm, const char *name)
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
krb5_error_code KRB5_LIB_FUNCTION
|
krb5_error_code KRB5_LIB_FUNCTION
|
||||||
krb5_425_conv_principal_ext(krb5_context context,
|
krb5_425_conv_principal_ext2(krb5_context context,
|
||||||
const char *name,
|
const char *name,
|
||||||
const char *instance,
|
const char *instance,
|
||||||
const char *realm,
|
const char *realm,
|
||||||
krb5_boolean (*func)(krb5_context, krb5_principal),
|
krb5_boolean (*func)(krb5_context,
|
||||||
krb5_boolean resolve,
|
void *, krb5_principal),
|
||||||
krb5_principal *princ)
|
void *funcctx,
|
||||||
|
krb5_boolean resolve,
|
||||||
|
krb5_principal *princ)
|
||||||
{
|
{
|
||||||
const char *p;
|
const char *p;
|
||||||
krb5_error_code ret;
|
krb5_error_code ret;
|
||||||
@@ -732,7 +734,7 @@ krb5_425_conv_principal_ext(krb5_context context,
|
|||||||
if(p){
|
if(p){
|
||||||
instance = p;
|
instance = p;
|
||||||
ret = krb5_make_principal(context, &pr, realm, name, instance, NULL);
|
ret = krb5_make_principal(context, &pr, realm, name, instance, NULL);
|
||||||
if(func == NULL || (*func)(context, pr)){
|
if(func == NULL || (*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -789,7 +791,7 @@ krb5_425_conv_principal_ext(krb5_context context,
|
|||||||
NULL);
|
NULL);
|
||||||
free (inst);
|
free (inst);
|
||||||
if(ret == 0) {
|
if(ret == 0) {
|
||||||
if(func == NULL || (*func)(context, pr)){
|
if(func == NULL || (*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -801,7 +803,7 @@ krb5_425_conv_principal_ext(krb5_context context,
|
|||||||
snprintf(host, sizeof(host), "%s.%s", instance, realm);
|
snprintf(host, sizeof(host), "%s.%s", instance, realm);
|
||||||
strlwr(host);
|
strlwr(host);
|
||||||
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
||||||
if((*func)(context, pr)){
|
if((*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -828,7 +830,7 @@ krb5_425_conv_principal_ext(krb5_context context,
|
|||||||
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);
|
||||||
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
||||||
if(func == NULL || (*func)(context, pr)){
|
if(func == NULL || (*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
krb5_config_free_strings(domains);
|
krb5_config_free_strings(domains);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -852,7 +854,7 @@ krb5_425_conv_principal_ext(krb5_context context,
|
|||||||
snprintf(host, sizeof(host), "%s.%s", instance, p);
|
snprintf(host, sizeof(host), "%s.%s", instance, p);
|
||||||
local_host:
|
local_host:
|
||||||
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
ret = krb5_make_principal(context, &pr, realm, name, host, NULL);
|
||||||
if(func == NULL || (*func)(context, pr)){
|
if(func == NULL || (*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -878,7 +880,7 @@ no_host:
|
|||||||
name = p;
|
name = p;
|
||||||
|
|
||||||
ret = krb5_make_principal(context, &pr, realm, name, instance, NULL);
|
ret = krb5_make_principal(context, &pr, realm, name, instance, NULL);
|
||||||
if(func == NULL || (*func)(context, pr)){
|
if(func == NULL || (*func)(context, funcctx, pr)){
|
||||||
*princ = pr;
|
*princ = pr;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -887,6 +889,34 @@ no_host:
|
|||||||
return HEIM_ERR_V4_PRINC_NO_CONV;
|
return HEIM_ERR_V4_PRINC_NO_CONV;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_boolean
|
||||||
|
convert_func(krb5_context conxtext, void *funcctx, krb5_principal principal)
|
||||||
|
{
|
||||||
|
krb5_boolean (*func)(krb5_context, krb5_principal) = funcctx;
|
||||||
|
return (*func)(conxtext, principal);
|
||||||
|
}
|
||||||
|
|
||||||
|
krb5_error_code KRB5_LIB_FUNCTION
|
||||||
|
krb5_425_conv_principal_ext(krb5_context context,
|
||||||
|
const char *name,
|
||||||
|
const char *instance,
|
||||||
|
const char *realm,
|
||||||
|
krb5_boolean (*func)(krb5_context, krb5_principal),
|
||||||
|
krb5_boolean resolve,
|
||||||
|
krb5_principal *principal)
|
||||||
|
{
|
||||||
|
return krb5_425_conv_principal_ext2(context,
|
||||||
|
name,
|
||||||
|
instance,
|
||||||
|
realm,
|
||||||
|
func ? convert_func : NULL,
|
||||||
|
func,
|
||||||
|
resolve,
|
||||||
|
principal);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
krb5_error_code KRB5_LIB_FUNCTION
|
krb5_error_code KRB5_LIB_FUNCTION
|
||||||
krb5_425_conv_principal(krb5_context context,
|
krb5_425_conv_principal(krb5_context context,
|
||||||
const char *name,
|
const char *name,
|
||||||
|
Reference in New Issue
Block a user