summaryrefslogtreecommitdiffstats
path: root/src/kadmin
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
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')
-rw-r--r--src/kadmin/cli/kadmin.c39
-rw-r--r--src/kadmin/dbutil/dump.c10
-rw-r--r--src/kadmin/dbutil/kdb5_util.c6
-rw-r--r--src/kadmin/dbutil/loadv4.c7
4 files changed, 13 insertions, 49 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",
diff --git a/src/kadmin/dbutil/dump.c b/src/kadmin/dbutil/dump.c
index fbb8fd21e..7c7bf3203 100644
--- a/src/kadmin/dbutil/dump.c
+++ b/src/kadmin/dbutil/dump.c
@@ -330,15 +330,12 @@ void update_ok_file (file_name)
int fd;
static char ok[]=".dump_ok";
- if ((file_ok = (char *)malloc(strlen(file_name) + strlen(ok) + 1))
- == NULL) {
+ if (asprintf(&file_ok, "%s%s", file_name, ok) < 0) {
com_err(progname, ENOMEM,
"while allocating filename for update_ok_file");
exit_status++;
return;
}
- strcpy(file_ok, file_name);
- strcat(file_ok, ok);
if ((fd = open(file_ok, O_WRONLY|O_CREAT|O_TRUNC, 0600)) < 0) {
com_err(progname, errno, "while creating 'ok' file, '%s'",
file_ok);
@@ -2282,14 +2279,11 @@ load_db(argc, argv)
}
dumpfile = argv[aindex];
- if (!(dbname_tmp = (char *) malloc(strlen(dbname)+
- strlen(dump_tmptrail)+1))) {
+ if (asprintf(&dbname_tmp, "%s%s", dbname, dump_tmptrail) < 0) {
fprintf(stderr, no_name_mem_fmt, progname);
exit_status++;
return;
}
- strcpy(dbname_tmp, dbname);
- strcat(dbname_tmp, dump_tmptrail);
/*
* Initialize the Kerberos context and error tables.
diff --git a/src/kadmin/dbutil/kdb5_util.c b/src/kadmin/dbutil/kdb5_util.c
index ff6bcc995..a61469a17 100644
--- a/src/kadmin/dbutil/kdb5_util.c
+++ b/src/kadmin/dbutil/kdb5_util.c
@@ -215,16 +215,12 @@ int main(argc, argv)
global_params.dbname = koptarg;
global_params.mask |= KADM5_CONFIG_DBNAME;
- db_name_tmp = malloc( strlen(global_params.dbname) + sizeof("dbname="));
- if( db_name_tmp == NULL )
+ if (asprintf(&db_name_tmp, "dbname=%s", global_params.dbname) < 0)
{
com_err(progname, ENOMEM, "while parsing command arguments");
exit(1);
}
- strcpy( db_name_tmp, "dbname=");
- strcat( db_name_tmp, global_params.dbname );
-
if (!add_db_arg(db_name_tmp)) {
com_err(progname, ENOMEM, "while parsing command arguments\n");
exit(1);
diff --git a/src/kadmin/dbutil/loadv4.c b/src/kadmin/dbutil/loadv4.c
index 4c3591ea0..91b31fe0c 100644
--- a/src/kadmin/dbutil/loadv4.c
+++ b/src/kadmin/dbutil/loadv4.c
@@ -267,16 +267,11 @@ load_v4db(argc, argv)
}
tempdbname = dbname;
} else {
- size_t dbnamelen = strlen(dbname);
- tempdbname = malloc(dbnamelen + 2);
- if (tempdbname == 0) {
+ if (asprintf(&tempdbname, "%s~", dbname) < 0)
com_err(PROGNAME, ENOMEM, "allocating temporary filename");
krb5_free_context(context);
return;
}
- strcpy(tempdbname, dbname);
- tempdbname[dbnamelen] = '~';
- tempdbname[dbnamelen+1] = 0;
(void) krb5_db_destroy(context, tempdbname);
}