diff options
| author | Greg Hudson <ghudson@mit.edu> | 2008-10-20 21:14:47 +0000 |
|---|---|---|
| committer | Greg Hudson <ghudson@mit.edu> | 2008-10-20 21:14:47 +0000 |
| commit | ae423f53214830de1367627180031283de998746 (patch) | |
| tree | f3268a5a9d718d570883bf296c52c117e0dfc709 /src/kadmin/cli | |
| parent | cdea7397975a960e3c02479f8aa4ede0bc349105 (diff) | |
| download | krb5-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.c | 39 |
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", |
