summaryrefslogtreecommitdiffstats
path: root/src/lib/krb5/krb/copy_princ.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/krb5/krb/copy_princ.c')
-rw-r--r--src/lib/krb5/krb/copy_princ.c18
1 files changed, 8 insertions, 10 deletions
diff --git a/src/lib/krb5/krb/copy_princ.c b/src/lib/krb5/krb/copy_princ.c
index 3db027e174..0d0e6a0048 100644
--- a/src/lib/krb5/krb/copy_princ.c
+++ b/src/lib/krb5/krb/copy_princ.c
@@ -33,7 +33,7 @@ krb5_error_code KRB5_CALLCONV
krb5_copy_principal(krb5_context context, krb5_const_principal inprinc, krb5_principal *outprinc)
{
register krb5_principal tempprinc;
- register int i, nelems;
+ krb5_int32 i;
tempprinc = (krb5_principal)malloc(sizeof(krb5_principal_data));
@@ -42,20 +42,18 @@ krb5_copy_principal(krb5_context context, krb5_const_principal inprinc, krb5_pri
*tempprinc = *inprinc;
- nelems = (int) krb5_princ_size(context, inprinc);
- tempprinc->data = malloc(nelems * sizeof(krb5_data));
+ tempprinc->data = malloc(inprinc->length * sizeof(krb5_data));
if (tempprinc->data == 0) {
free(tempprinc);
return ENOMEM;
}
- for (i = 0; i < nelems; i++) {
- if (krb5int_copy_data_contents(context,
- krb5_princ_component(context, inprinc, i),
- krb5_princ_component(context, tempprinc, i)) != 0) {
+ for (i = 0; i < inprinc->length; i++) {
+ if (krb5int_copy_data_contents(context, &inprinc->data[i],
+ &tempprinc->data[i]) != 0) {
while (--i >= 0)
- free(krb5_princ_component(context, tempprinc, i)->data);
+ free(tempprinc->data[i].data);
free (tempprinc->data);
free (tempprinc);
return ENOMEM;
@@ -64,8 +62,8 @@ krb5_copy_principal(krb5_context context, krb5_const_principal inprinc, krb5_pri
if (krb5int_copy_data_contents_add0(context, &inprinc->realm,
&tempprinc->realm) != 0) {
- for (i = 0; i < nelems; i++)
- free(krb5_princ_component(context, tempprinc, i)->data);
+ for (i = 0; i < inprinc->length; i++)
+ free(tempprinc->data[i].data);
free(tempprinc->data);
free(tempprinc);
return ENOMEM;