Index: sbin/newfs_msdos/newfs_msdos.c =================================================================== --- sbin/newfs_msdos/newfs_msdos.c +++ sbin/newfs_msdos/newfs_msdos.c @@ -59,9 +59,12 @@ { static const char opts[] = "@:NB:C:F:I:L:O:S:a:b:c:e:f:h:i:k:m:n:o:r:s:u:"; struct msdos_options o; - const char *fname, *dtype; + char *fname; + const char *dtype; char buf[MAXPATHLEN]; int ch; + int local_fname = 0; + int ret; memset(&o, 0, sizeof(o)); @@ -157,9 +160,13 @@ snprintf(buf, sizeof(buf), "%s%s", _PATH_DEV, fname); if (!(fname = strdup(buf))) err(1, NULL); + local_fname = 1; } dtype = *argv; - return !!mkfs_msdos(fname, dtype, &o); + ret = !!mkfs_msdos(fname, dtype, &o); + if (local_fname) + free(fname); + return ret; } /*