summaryrefslogtreecommitdiffstats
path: root/usr.sbin/config/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr.sbin/config/main.c')
-rw-r--r--usr.sbin/config/main.c20
1 files changed, 9 insertions, 11 deletions
diff --git a/usr.sbin/config/main.c b/usr.sbin/config/main.c
index d803325..638ac90 100644
--- a/usr.sbin/config/main.c
+++ b/usr.sbin/config/main.c
@@ -96,7 +96,7 @@ main(int argc, char **argv)
switch (ch) {
case 'd':
if (*destdir == '\0')
- strcpy(destdir, optarg);
+ strlcpy(destdir, optarg, sizeof(destdir));
else
errx(2, "directory already set");
break;
@@ -133,8 +133,8 @@ main(int argc, char **argv)
destdir[--len] = '\0';
get_srcdir();
} else {
- strcpy(destdir, CDIR);
- strcat(destdir, PREFIX);
+ strlcpy(destdir, CDIR, sizeof(destdir));
+ strlcat(destdir, PREFIX, sizeof(destdir));
}
p = path((char *)NULL);
@@ -181,7 +181,7 @@ main(int argc, char **argv)
* and similarly for "machine".
*/
{
- char xxx[80];
+ char xxx[MAXPATHLEN];
if (*srcdir == '\0')
(void)snprintf(xxx, sizeof(xxx), "../../%s/include",
machinename);
@@ -343,14 +343,12 @@ begin:
char *
path(char *file)
{
- char *cp;
+ char *cp = NULL;
- cp = malloc((size_t)(strlen(destdir) + (file ? strlen(file) : 0) + 2));
- (void) strcpy(cp, destdir);
- if (file) {
- (void) strcat(cp, "/");
- (void) strcat(cp, file);
- }
+ if (file)
+ asprintf(&cp, "%s/%s", destdir, file);
+ else
+ cp = strdup(destdir);
return (cp);
}
OpenPOWER on IntegriCloud