aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTomas Kuthan <tkuthan@gmail.com>2014-04-10 15:16:06 +0200
committerTom Yu <tlyu@mit.edu>2015-02-06 17:06:50 -0500
commit337a1f7b013fe18332614a539af3872d1ce89295 (patch)
treefd108811dad1d3c4065845912d49a01d6f8a15c2
parentaaaef80edb4746ae2d631c669073a7eaa91dfdbb (diff)
downloadkrb5-337a1f7b013fe18332614a539af3872d1ce89295.zip
krb5-337a1f7b013fe18332614a539af3872d1ce89295.tar.gz
krb5-337a1f7b013fe18332614a539af3872d1ce89295.tar.bz2
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] (cherry picked from commit f5645d30cf83398640c386a612eb6f07c543286f) ticket: 8097 (new) version_fixed: 1.11.6 status: resolved
-rw-r--r--src/kadmin/dbutil/kadm5_create.c30
1 files changed, 4 insertions, 26 deletions
diff --git a/src/kadmin/dbutil/kadm5_create.c b/src/kadmin/dbutil/kadm5_create.c
index 567f5f5..4abad5b 100644
--- a/src/kadmin/dbutil/kadm5_create.c
+++ b/src/kadmin/dbutil/kadm5_create.c
@@ -126,31 +126,6 @@ int kadm5_create_magic_princs(kadm5_config_params *params,
}
/*
- * 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
*
* Purpose: create admin principals
@@ -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"));