Copy cc_ops and kt_types when copying a krb5_context in krb5_copy_context()
This commit is contained in:

committed by
Love Hornquist Astrand

parent
7262cbab9c
commit
81b70c3488
@@ -242,6 +242,29 @@ cc_ops_register(krb5_context context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
cc_ops_copy(krb5_context context, const krb5_context src_context)
|
||||||
|
{
|
||||||
|
context->cc_ops = NULL;
|
||||||
|
context->num_cc_ops = 0;
|
||||||
|
|
||||||
|
if (src_context->num_cc_ops == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
context->cc_ops = malloc(sizeof(context->cc_ops[0]) * src_context->num_cc_ops);
|
||||||
|
if (context->cc_ops == NULL) {
|
||||||
|
krb5_set_error_message(context, KRB5_CC_NOMEM,
|
||||||
|
N_("malloc: out of memory", ""));
|
||||||
|
return KRB5_CC_NOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
context->num_cc_ops = src_context->num_cc_ops;
|
||||||
|
memcpy(context->cc_ops, src_context->cc_ops,
|
||||||
|
sizeof(context->cc_ops[0]) * src_context->num_cc_ops);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static krb5_error_code
|
static krb5_error_code
|
||||||
kt_ops_register(krb5_context context)
|
kt_ops_register(krb5_context context)
|
||||||
{
|
{
|
||||||
@@ -259,6 +282,28 @@ kt_ops_register(krb5_context context)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static krb5_error_code
|
||||||
|
kt_ops_copy(krb5_context context, const krb5_context src_context)
|
||||||
|
{
|
||||||
|
context->num_kt_types = 0;
|
||||||
|
context->kt_types = NULL;
|
||||||
|
|
||||||
|
if (src_context->num_kt_types == 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
context->kt_types = malloc(sizeof(context->kt_types[0]) * src_context->num_kt_types);
|
||||||
|
if (context->kt_types == NULL) {
|
||||||
|
krb5_set_error_message(context, ENOMEM,
|
||||||
|
N_("malloc: out of memory", ""));
|
||||||
|
return ENOMEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
context->num_kt_types = src_context->num_kt_types;
|
||||||
|
memcpy(context->kt_types, src_context->kt_types,
|
||||||
|
sizeof(context->kt_types[0]) * src_context->num_kt_types);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the context structure and reads the configuration file
|
* Initializes the context structure and reads the configuration file
|
||||||
@@ -424,8 +469,9 @@ krb5_copy_context(krb5_context context, krb5_context *out)
|
|||||||
|
|
||||||
/* XXX should copy */
|
/* XXX should copy */
|
||||||
krb5_init_ets(p);
|
krb5_init_ets(p);
|
||||||
cc_ops_register(p);
|
|
||||||
kt_ops_register(p);
|
cc_ops_copy(p, context);
|
||||||
|
kt_ops_copy(p, context);
|
||||||
|
|
||||||
#if 0 /* XXX */
|
#if 0 /* XXX */
|
||||||
if(context->warn_dest != NULL)
|
if(context->warn_dest != NULL)
|
||||||
|
Reference in New Issue
Block a user