From: Masatake YAMATO Date: Tue, 23 Jan 2024 23:57:06 +0000 (+0900) Subject: tests: (lsfd) add a case testing ERROR type appeared in TYPE column X-Git-Tag: v2.42-start~545^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=61ece2b54bb512b85a6119716b34cbe8038ab69e;p=thirdparty%2Futil-linux.git tests: (lsfd) add a case testing ERROR type appeared in TYPE column Signed-off-by: Masatake YAMATO --- diff --git a/tests/expected/lsfd/error-eaccess b/tests/expected/lsfd/error-eaccess new file mode 100644 index 0000000000..ba132d7ab4 --- /dev/null +++ b/tests/expected/lsfd/error-eaccess @@ -0,0 +1,2 @@ +0 exe ERROR readlink:EACCES +UID,ASSOC,TYPE,SOURCE: 0 diff --git a/tests/expected/lsfd/error-eperm b/tests/expected/lsfd/error-eperm new file mode 100644 index 0000000000..a56abc5428 --- /dev/null +++ b/tests/expected/lsfd/error-eperm @@ -0,0 +1,2 @@ +mem ERROR stat:EPERM +ASSOC,TYPE,SOURCE: 0 diff --git a/tests/ts/lsfd/error-eaccess b/tests/ts/lsfd/error-eaccess new file mode 100755 index 0000000000..0bf0774643 --- /dev/null +++ b/tests/ts/lsfd/error-eaccess @@ -0,0 +1,44 @@ +#!/bin/bash +# +# Copyright (C) 2024 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +TS_TOPDIR="${0%/*}/../.." +TS_DESC="fd opening a file cannot be readlink(2)'ed" + +. "$TS_TOPDIR"/functions.sh +ts_init "$*" +ts_skip_nonroot + +ts_check_test_command "$TS_CMD_LSFD" +ts_check_test_command "$TS_HELPER_MKFDS" + +ts_cd "$TS_OUTDIR" + +PID= +FD=3 +EXPR= + +{ + coproc MKFDS { "$TS_HELPER_MKFDS" ro-regular-file "$FD"; } + if read -u ${MKFDS[0]} PID; then + EXPR='(ASSOC == "exe")' + ${TS_CMD_LSFD} --_drop-privilege -p "$PID" -n -o UID,ASSOC,TYPE,SOURCE -Q "$EXPR" + echo "UID,ASSOC,TYPE,SOURCE: " $? + echo DONE >&"${MKFDS[1]}" + fi +} > "$TS_OUTPUT" 2>&1 +wait "${MKFDS_PID}" + +ts_finalize diff --git a/tests/ts/lsfd/error-eperm b/tests/ts/lsfd/error-eperm new file mode 100755 index 0000000000..6d2c179707 --- /dev/null +++ b/tests/ts/lsfd/error-eperm @@ -0,0 +1,77 @@ +#!/bin/bash +# +# Copyright (C) 2024 Masatake YAMATO +# +# This file is part of util-linux. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This file is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +TS_TOPDIR="${0%/*}/../.." +TS_DESC="fd opening a file cannot be stat(2)'ed" + +. "$TS_TOPDIR"/functions.sh +ts_init "$*" + +ts_check_test_command "$TS_CMD_LSFD" +ts_check_test_command "$TS_HELPER_MKFDS" +ts_check_test_command "$TS_CMD_SETPRIV" + +ts_check_prog "chmod" +ts_check_prog "dd" +ts_check_prog "id" +ts_check_prog "mkdir" +ts_check_prog "rm" +ts_check_prog "rmdir" + +ts_cd "$TS_OUTDIR" + +pid=$$ +DIR=d"$pid" +FILE=${DIR}/f"$pid" + +if ! mkdir -p "$DIR"; then + ts_die "error in mkdir" +fi + +if ! dd if=/dev/zero of="$FILE" bs=4096 count=1 status=none; then + rmdir "$DIR" + ts_die "error in dd" +fi + +LAUNCHER= +if [ "$(id -u)" = 0 ]; then + chown -R 1 $DIR + LAUNCHER="$TS_CMD_SETPRIV --reuid=1" + LSFD_XOPT="--_drop-privilege" +fi + +PID= +EXPR= + +{ + coproc MKFDS { $LAUNCHER "$TS_HELPER_MKFDS" mmap file="$FILE"; } + if read -u ${MKFDS[0]} PID; then + chmod u-rwx "$DIR" + + EXPR='(ASSOC == "mem") and (NAME =~ ".*/'"$FILE"'$")' + ${TS_CMD_LSFD} ${LSFD_XOPT} -p "$PID" -n -o ASSOC,TYPE,SOURCE -Q "$EXPR" + echo "ASSOC,TYPE,SOURCE: " $? + + chmod u+rwx "$DIR" + rm "$FILE" + rmdir "$DIR" + + echo DONE >&"${MKFDS[1]}" + fi +} > "$TS_OUTPUT" 2>&1 +wait "${MKFDS_PID}" + +ts_finalize