summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1992-08-18 23:19:55 +0000
committerTheodore Tso <tytso@mit.edu>1992-08-18 23:19:55 +0000
commitecd643d43e93c63bc562cddcd052fe87ea8d6ad6 (patch)
treea8829bcdf8d8acd8bc99238964311f54974d601c /src/lib
parentab30596fc6100b42a626093c24886b03f118d760 (diff)
downloadkrb5-ecd643d43e93c63bc562cddcd052fe87ea8d6ad6.tar.gz
krb5-ecd643d43e93c63bc562cddcd052fe87ea8d6ad6.tar.xz
krb5-ecd643d43e93c63bc562cddcd052fe87ea8d6ad6.zip
Modified to use new principal type system
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@2329 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/krb/copy_princ.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/copy_princ.c b/src/lib/krb5/krb/copy_princ.c
index bff89b47e..8abdcbb9f 100644
--- a/src/lib/krb5/krb/copy_princ.c
+++ b/src/lib/krb5/krb/copy_princ.c
@@ -50,6 +50,8 @@ krb5_principal *outprinc;
if (tempprinc == 0)
return ENOMEM;
+ *tempprinc = *inprinc; /* Copy all of the non-allocated pieces */
+
nelems = krb5_princ_size(inprinc);
tempprinc->data = malloc(nelems * sizeof(krb5_data));
@@ -68,7 +70,21 @@ krb5_principal *outprinc;
free (tempprinc);
return ENOMEM;
}
+ memcpy(krb5_princ_component(tempprinc, i)->data,
+ krb5_princ_component(inprinc, i)->data, len);
+ }
+
+ tempprinc->realm.data =
+ malloc(tempprinc->realm.length = inprinc->realm.length);
+ if (!tempprinc->realm.data) {
+ for (i = 0; i < nelems; i++)
+ free(krb5_princ_component(tempprinc, i)->data);
+ free(tempprinc->data);
+ free(tempprinc);
+ return ENOMEM;
}
+ memcpy(tempprinc->realm.data, inprinc->realm.data, inprinc->realm.length);
+
*outprinc = tempprinc;
return 0;
}