summaryrefslogtreecommitdiffstats
path: root/src/kadmin/cli
diff options
context:
space:
mode:
authorGreg Hudson <ghudson@mit.edu>2008-10-20 21:14:47 +0000
committerGreg Hudson <ghudson@mit.edu>2008-10-20 21:14:47 +0000
commitae423f53214830de1367627180031283de998746 (patch)
treef3268a5a9d718d570883bf296c52c117e0dfc709 /src/kadmin/cli
parentcdea7397975a960e3c02479f8aa4ede0bc349105 (diff)
downloadkrb5-ae423f53214830de1367627180031283de998746.tar.gz
krb5-ae423f53214830de1367627180031283de998746.tar.xz
krb5-ae423f53214830de1367627180031283de998746.zip
Use asprintf instead of malloc/strcpy/strcat in many places
ticket: 6200 status: open git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@20901 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/kadmin/cli')
-rw-r--r--src/kadmin/cli/kadmin.c39
1 files changed, 9 insertions, 30 deletions
diff --git a/src/kadmin/cli/kadmin.c b/src/kadmin/cli/kadmin.c
index b3f2b3f21..e5a336aa0 100644
--- a/src/kadmin/cli/kadmin.c
+++ b/src/kadmin/cli/kadmin.c
@@ -279,14 +279,9 @@ char *kadmin_startup(argc, argv)
break;
case 'd':
/* now db_name is not a seperate argument. It has to be passed as part of the db_args */
- if (!db_name) {
- db_name = malloc(strlen(optarg) + sizeof("dbname="));
- } else {
- db_name = realloc(db_name, strlen(optarg) + sizeof("dbname="));
- }
-
- strcpy(db_name, "dbname=");
- strcat(db_name, optarg);
+ if (db_name)
+ free(db_name);
+ asprintf(&db_name, "dbname=%s", optarg);
db_args_size++;
{
@@ -437,43 +432,27 @@ char *kadmin_startup(argc, argv)
}
if (cp != NULL)
*cp = '\0';
- princstr = (char*)malloc(strlen(canon) + 6 /* "/admin" */ +
- (realm ? 1 + strlen(realm) : 0) + 1);
- if (princstr == NULL) {
+ if (asprintf(&princstr, "%s/admin%s%s", canon,
+ (realm) ? "@" : "",
+ (realm) ? realm : "") < 0) {
fprintf(stderr, "%s: out of memory\n", whoami);
exit(1);
}
- strcpy(princstr, canon);
- strcat(princstr, "/admin");
- if (realm) {
- strcat(princstr, "@");
- strcat(princstr, realm);
- }
free(canon);
krb5_free_principal(context, princ);
freeprinc++;
} else if ((luser = getenv("USER"))) {
- princstr = (char *) malloc(strlen(luser) + 7 /* "/admin@" */
- + strlen(def_realm) + 1);
- if (princstr == NULL) {
+ if (asprintf(&princstr, "%s/admin@%s", luser, def_realm) < 0) {
fprintf(stderr, "%s: out of memory\n", whoami);
exit(1);
}
- strcpy(princstr, luser);
- strcat(princstr, "/admin");
- strcat(princstr, "@");
- strcat(princstr, def_realm);
freeprinc++;
} else if ((pw = getpwuid(getuid()))) {
- princstr = (char *) malloc(strlen(pw->pw_name) + 7 /* "/admin@" */
- + strlen(def_realm) + 1);
- if (princstr == NULL) {
+ if (asprintf(&princstr, "%s/admin@%s", pw->pw_name,
+ def_realm) < 0) {
fprintf(stderr, "%s: out of memory\n", whoami);
exit(1);
}
- strcpy(princstr, pw->pw_name);
- strcat(princstr, "/admin@");
- strcat(princstr, def_realm);
freeprinc++;
} else {
fprintf(stderr, "%s: unable to figure out a principal name\n",