diff options
author | Xiao Yang <yangx.jy@cn.fujitsu.com> | 2019-02-27 14:01:43 +0800 |
---|---|---|
committer | Cyril Hrubis <chrubis@suse.cz> | 2019-03-05 14:23:12 +0100 |
commit | a6938ba3640fde53a4a088780b7cf182fd1cff37 (patch) | |
tree | b40a44ee305f70efb4cdd0eb4d02556dc382fef1 /testcases/kernel/fs/binfmt_misc | |
parent | ceb94fb9d3782bf3d2f221f1d260267106876aaf (diff) | |
download | ltp-a6938ba3640fde53a4a088780b7cf182fd1cff37.tar.gz |
fs/binfmt_misc02.sh: Add new test for basic functionality
Register a new binary type and then check if binfmt_misc
recognises the binary type in some conditions.
Signed-off-by: Xiao Yang <yangx.jy@cn.fujitsu.com>
Acked-by: Cyril Hrubis <chrubis@suse.cz>
Diffstat (limited to 'testcases/kernel/fs/binfmt_misc')
-rw-r--r-- | testcases/kernel/fs/binfmt_misc/Makefile | 4 | ||||
-rwxr-xr-x | testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh | 107 | ||||
-rw-r--r-- | testcases/kernel/fs/binfmt_misc/datafiles/Makefile | 13 | ||||
-rwxr-xr-x | testcases/kernel/fs/binfmt_misc/datafiles/file.extension | 1 | ||||
-rwxr-xr-x | testcases/kernel/fs/binfmt_misc/datafiles/file.magic | 1 |
5 files changed, 124 insertions, 2 deletions
diff --git a/testcases/kernel/fs/binfmt_misc/Makefile b/testcases/kernel/fs/binfmt_misc/Makefile index f9819ad47..14437b50d 100644 --- a/testcases/kernel/fs/binfmt_misc/Makefile +++ b/testcases/kernel/fs/binfmt_misc/Makefile @@ -7,6 +7,6 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/env_pre.mk -INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc_lib.sh +INSTALL_TARGETS := binfmt_misc01.sh binfmt_misc02.sh binfmt_misc_lib.sh -include $(top_srcdir)/include/mk/generic_leaf_target.mk +include $(top_srcdir)/include/mk/generic_trunk_target.mk diff --git a/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh new file mode 100755 index 000000000..8d0ecd895 --- /dev/null +++ b/testcases/kernel/fs/binfmt_misc/binfmt_misc02.sh @@ -0,0 +1,107 @@ +#!/bin/sh +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved. +# Author: Xiao Yang <yangx.jy@cn.fujitsu.com> +# +# Description: +# Register a new binary type and then check if binfmt_misc +# recognises the binary type in some conditions. +# 1) binfmt_misc should recognise the binary type when extension +# or magic is matched. +# 2) binfmt_misc should not recognise the binary type when extension +# or magic is mismatched. +# 3) binfmt_misc should not recognise the binary type when it is +# disabled. +# +# Note: +# We use various delimiteris to register a new binary type. + +TST_CNT=6 +TST_TESTFUNC=do_test +TST_NEEDS_CMDS="which cat head" + +. binfmt_misc_lib.sh + +recognised_unrecognised() +{ + local file=$1 + local string=$2 + + eval $file >temp 2>&1 + if [ $? -ne 0 ] || ! grep -q "$string" temp; then + tst_res TFAIL "Fail to recognise a binary type" + return + fi + + (echo 0 >"$mntpoint/$name") 2>/dev/null + if [ $? -ne 0 ] || grep -q enable "$mntpoint/$name"; then + tst_res TFAIL "Fail to disable a binary type" + return + fi + + eval $file >temp 2>&1 + if [ $? -eq 0 ] || grep -q "$string" temp; then + tst_res TFAIL "Recognise a disabled binary type successfully" + return + fi + + tst_res TPASS "Recognise and unrecognise a binary type as expected" +} + +unrecognised() +{ + local file=$1 + local string=$2 + + eval $file >temp 2>&1 + if [ $? -eq 0 ] || grep -q "$string" temp; then + tst_res TFAIL "Recognise a binary type successfully" + else + tst_res TPASS "Fail to recognise a binary type" + fi +} + +verify_binfmt_misc() +{ + local delimiter=$(echo "$1" | head -c1) + local name=$(echo "$1" | awk -F $delimiter '{print $2}') + local ttype=$(echo "$1" | awk -F $delimiter '{print $3}') + local tfile=$2 + local valid=$3 + local mntpoint=$(get_binfmt_misc_mntpoint) + + (echo "$1" >"$mntpoint/register") 2>/dev/null + if [ $? -ne 0 -o ! -f "$mntpoint/$name" ]; then + tst_res TFAIL "Fail to register a binary type" + return + fi + + [ "$ttype" = "E" ] && local tstring="This is test for extension" + [ "$ttype" = "M" ] && local tstring="This is test for magic" + + [ "$valid" = "1" ] && recognised_unrecognised "$tfile" "$tstring" + [ "$valid" = "0" ] && unrecognised "$tfile" "$tstring" + + remove_binary_type "$mntpoint/$name" +} + +do_test() +{ + case $1 in + 1) verify_binfmt_misc ":textension:E::extension::$(which cat):" \ + "$TST_DATAROOT/file.extension" "1";; + 2) verify_binfmt_misc ":tmagic:M:1:This::$(which cat):" \ + "$TST_DATAROOT/file.magic" "1";; + 3) verify_binfmt_misc ".textension.E..extension..$(which cat)." \ + "$TST_DATAROOT/file.extension" "1";; + 4) verify_binfmt_misc ",tmagic,M,1,This,,$(which cat)," \ + "$TST_DATAROOT/file.magic" "1";; + 5) verify_binfmt_misc ":textension:E::ltp::$(which cat):" \ + "$TST_DATAROOT/file.extension" "0";; + 6) verify_binfmt_misc ":tmagic:M:0:This::$(which cat):" \ + "$TST_DATAROOT/file.magic" "0";; + esac +} + +tst_run diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/Makefile b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile new file mode 100644 index 000000000..e6d1487c9 --- /dev/null +++ b/testcases/kernel/fs/binfmt_misc/datafiles/Makefile @@ -0,0 +1,13 @@ +# SPDX-License-Identifier: GPL-2.0-or-later +# +# Copyright (c) 2019 FUJITSU LIMITED. All rights reserved. +# Author: Xiao Yang <yangx.jy@cn.fujitsu.com> + +top_srcdir ?= ../../../../.. + +include $(top_srcdir)/include/mk/env_pre.mk + +INSTALL_DIR := testcases/data/binfmt_misc02 +INSTALL_TARGETS := file.extension file.magic + +include $(top_srcdir)/include/mk/generic_leaf_target.mk diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.extension b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension new file mode 100755 index 000000000..8468a8fa1 --- /dev/null +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.extension @@ -0,0 +1 @@ +This is test for extension diff --git a/testcases/kernel/fs/binfmt_misc/datafiles/file.magic b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic new file mode 100755 index 000000000..f2823b67b --- /dev/null +++ b/testcases/kernel/fs/binfmt_misc/datafiles/file.magic @@ -0,0 +1 @@ + This is test for magic |