From 7470d9ea6b51ae513579324eae88e9ba6d9d80e2 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 24 Aug 1997 06:06:52 +0000 Subject: [PATCH] fix krb5_build_principal_ext & c:o git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@3098 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/principal.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/krb5/principal.c b/lib/krb5/principal.c index 9d630b3f5..0941ed779 100644 --- a/lib/krb5/principal.c +++ b/lib/krb5/principal.c @@ -264,7 +264,8 @@ krb5_build_principal(krb5_context context, static krb5_error_code append_component(krb5_context context, krb5_principal p, - general_string comp) + general_string comp, + size_t comp_len) { general_string *tmp; size_t len = princ_num_comp(p); @@ -272,7 +273,9 @@ append_component(krb5_context context, krb5_principal p, if(tmp == NULL) return ENOMEM; princ_comp(p) = tmp; - princ_ncomp(p, len) = strdup(comp); + princ_ncomp(p, len) = malloc(comp_len + 1); + memcpy (princ_ncomp(p, len), comp, comp_len); + princ_ncomp(p, len)[comp_len] = '\0'; princ_num_comp(p)++; return 0; } @@ -287,7 +290,7 @@ va_ext_princ(krb5_context context, krb5_principal p, va_list ap) if(len == 0) break; s = va_arg(ap, char*); - append_component(context, p, s); + append_component(context, p, s, len); } } @@ -299,7 +302,7 @@ va_princ(krb5_context context, krb5_principal p, va_list ap) s = va_arg(ap, char*); if(s == NULL) break; - append_component(context, p, s); + append_component(context, p, s, strlen(s)); } }