When iterating through VMFORMATS, the VMBASE file is

not removed or truncated to a zero-size file, which
if used to create more than one disk image format, can
result in accidental pollution of the target formatted
disk image.

Instead of using a single VMBASE image (vm.img, by
default), use a single base file for each format, named
as VMFORMAT.img, which produces VMBASE.VMFORMAT as the
final formatted image.

Reported by:	cperciva
MFC after:	1 month
X-MFC-with:	r277458, r277536
Sponsored by:	The FreeBSD Foundation
This commit is contained in:
Glen Barber 2015-01-23 21:04:59 +00:00
parent f860bc065a
commit e7c9030c0d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=277609

View File

@ -50,8 +50,8 @@ vm-${_CW:tl}:
.if defined(WITH_VMIMAGES) && !empty(WITH_VMIMAGES)
CLEANDIRS+= ${VMTARGETS}
CLEANFILES+= ${VMBASE}.img
. for FORMAT in ${VMFORMATS}
CLEANFILES+= ${FORMAT}.img
CLEANFILES+= ${VMBASE}.${FORMAT}
. endfor
.endif
@ -65,7 +65,7 @@ vm-image:
env TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \
${.CURDIR}/scripts/mk-vmimage.sh \
-C ${.CURDIR}/tools/vmimage.subr -d ${.OBJDIR}/${.TARGET} \
-i ${.OBJDIR}/${VMBASE}.img -s ${VMSIZE} -f ${FORMAT} \
-i ${.OBJDIR}/${FORMAT}.img -s ${VMSIZE} -f ${FORMAT} \
-S ${WORLDDIR} -o ${.OBJDIR}/${VMBASE}.${FORMAT}
. endfor
.endif