From: Tomas Kuthan Date: Thu, 10 Apr 2014 13:16:06 +0000 (+0200) Subject: Check for asprintf failure in kdb5_util create X-Git-Tag: krb5-1.13-alpha1~156 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5645d30cf83398640c386a612eb6f07c543286f;p=thirdparty%2Fkrb5.git Check for asprintf failure in kdb5_util create In add_admin_princ, remove build_name_with_realm and call asprintf directly instead. Check for asprintf failure to avoid passing an undefined pointer to krb5_parse_name. [ghudson@mit.edu: rewrite commit message] ticket: 7902 (new) target_version: 1.12.2 tags: pullup --- diff --git a/src/kadmin/dbutil/kadm5_create.c b/src/kadmin/dbutil/kadm5_create.c index 40f89a7ce2..5d2854ad2e 100644 --- a/src/kadmin/dbutil/kadm5_create.c +++ b/src/kadmin/dbutil/kadm5_create.c @@ -125,31 +125,6 @@ int kadm5_create_magic_princs(kadm5_config_params *params, return retval; } -/* - * Function: build_name_with_realm - * - * Purpose: concatenate a name and a realm to form a krb5 name - * - * Arguments: - * - * name (input) the name - * realm (input) the realm - * - * Returns: - * - * pointer to name@realm, in allocated memory, or NULL if it - * cannot be allocated - * - * Requires: both strings are null-terminated - */ -static char *build_name_with_realm(char *name, char *realm) -{ - char *n; - - asprintf(&n, "%s@%s", name, realm); - return n; -} - /* * Function: add_admin_princs * @@ -284,7 +259,10 @@ int add_admin_princ(void *handle, krb5_context context, memset(&ent, 0, sizeof(ent)); - fullname = build_name_with_realm(name, realm); + if (asprintf(&fullname, "%s@%s", name, realm) < 0) { + com_err(progname, ENOMEM, _("while appending realm to principal")); + return ERR; + } ret = krb5_parse_name(context, fullname, &ent.principal); if (ret) { com_err(progname, ret, _("while parsing admin principal name"));