diff options
author | Tomas Kuthan <tkuthan@gmail.com> | 2014-04-10 15:16:06 +0200 |
---|---|---|
committer | Tom Yu <tlyu@mit.edu> | 2015-02-06 17:06:50 -0500 |
commit | 337a1f7b013fe18332614a539af3872d1ce89295 (patch) | |
tree | fd108811dad1d3c4065845912d49a01d6f8a15c2 | |
parent | aaaef80edb4746ae2d631c669073a7eaa91dfdbb (diff) | |
download | krb5-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.c | 30 |
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")); |