_scratch_mkfs_sized() only receive integer number of bytes as a valid input. But if the MKFS_OPTIONS variable exists, it will use the value of block size in MKFS_OPTIONS to override input. In case of MKFS_OPTIONS="-b 4k", would result in blocksize=4 but not 4096. This will give errors to ext2/3/4 etc, and brings potential bugs to xfs or btrfs. Therefore, add validation check to force MKFS_OPTIONS to use pure integer in bytes for any size value. Signed-off-by: An Long <lan@xxxxxxxx> --- README | 3 ++- common/config | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/README b/README index 80d148be..7c2d3334 100644 --- a/README +++ b/README @@ -241,7 +241,8 @@ Misc: this option is supported for all filesystems currently only -overlay is expected to run without issues. For other filesystems additional patches and fixes to the test suite might be needed. - + - If MKFS_OPTIONS is used, the size value must be an integer number of bytes + without units. For example, set MKFS_OPTIONS="-b 4096" but not "-b 4k". ______________________ USING THE FSQA SUITE ______________________ diff --git a/common/config b/common/config index de3aba15..ec723ac4 100644 --- a/common/config +++ b/common/config @@ -896,5 +896,10 @@ else fi fi +# check the size value in $MKFS_OPTIONS is an integer +if [[ $MKFS_OPTIONS =~ [0-9]+[^0-9\ ] ]] ; then + _fatal "error: \$MKFS_OPTIONS: Only number in bytes is allowed, no units." +fi + # make sure this script returns success /bin/true -- 2.35.3