aboutsummaryrefslogtreecommitdiff
path: root/testcases/kernel/fs/binfmt_misc
diff options
context:
space:
mode:
authorXiao Yang <yangx.jy@cn.fujitsu.com>2019-02-27 14:01:43 +0800
committerCyril Hrubis <chrubis@suse.cz>2019-03-05 14:23:12 +0100
commita6938ba3640fde53a4a088780b7cf182fd1cff37 (patch)
treeb40a44ee305f70efb4cdd0eb4d02556dc382fef1 /testcases/kernel/fs/binfmt_misc
parentceb94fb9d3782bf3d2f221f1d260267106876aaf (diff)
downloadltp-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/Makefile4
-rwxr-xr-xtestcases/kernel/fs/binfmt_misc/binfmt_misc02.sh107
-rw-r--r--testcases/kernel/fs/binfmt_misc/datafiles/Makefile13
-rwxr-xr-xtestcases/kernel/fs/binfmt_misc/datafiles/file.extension1
-rwxr-xr-xtestcases/kernel/fs/binfmt_misc/datafiles/file.magic1
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