From 75808db17caf8b960b351e3408e74142f4c85aac Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 14 Apr 2024 15:42:30 +0200 Subject: Adding upstream version 2.117.0. Signed-off-by: Daniel Baumann --- .../scripts-bashisms/build-spec/debian/postinst | 87 ++++++++++ .../scripts-bashisms/build-spec/debian/prerm | 186 +++++++++++++++++++++ .../scripts-bashisms/build-spec/fill-values | 4 + .../checks/scripts/scripts-bashisms/eval/desc | 2 + .../checks/scripts/scripts-bashisms/eval/hints | 14 ++ 5 files changed, 293 insertions(+) create mode 100644 t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst create mode 100644 t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/prerm create mode 100644 t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values create mode 100644 t/recipes/checks/scripts/scripts-bashisms/eval/desc create mode 100644 t/recipes/checks/scripts/scripts-bashisms/eval/hints (limited to 't/recipes/checks/scripts/scripts-bashisms') diff --git a/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst new file mode 100644 index 0000000..7004ffc --- /dev/null +++ b/t/recipes/checks/scripts/scripts-bashisms/build-spec/debian/postinst @@ -0,0 +1,87 @@ +#! /bin/sh -e + +# valid +. /usr/share/lintian/shell || exit 0 +. /usr/share/lintian/shell >/dev/null +. /usr/share/lintian/shell 2>/dev/null +. /usr/share/lintian/shell /etc/config-file <<'EOF' +echo "All of the array is: ${H[@]}" +EOF + +# But this isn't. +cat '</dev/null +} + +source $FOO + +trap "echo hi" EXIT HUP 3 + +if [[ "$2" = "purge" ]]; then + kill -HUP $$ +fi + +#this is ok though +if test -n $(echo foo | perl -pe 's/[[:space:]]//go'); then + echo 1 +fi + +# More false positives for bashism checks. None of these are errors. +echo "$line" | grep -q '{fonts/map,}/{\$progname,pdftex,dvips,}//' +echo "$line" | grep -q "${fonts},${foo}" +echo '$[1+2]' +printf "foo |& bar" +perl -e "print q( kill -HUP $? )" + +# Still catch disallowed expansions in double-quotes, though. +echo "${line:3:1}" + +# More bashisms checks + +read -x foo +read -x +read -r foo +read foo +read + +echo "a\\b" +echo 'a\nb' + +echo "${UID}" +echo "$EUID" +echo "$SHLVL" +echo "$DIRSTACK" +echo "$SECONDS" +echo "$BASH" +echo "$BASH_FOO" +echo "$SHELLOPTS" +echo "$PIPESTATUS" + +bar="$(cut '-d|' -f2 <<< "$foo")" + +VAR=1 +VAR+=a + +echos() { + echo -n -e "bar" + echo -e -n "bar" + echo -en "bar" + echo -ne "bar" + echo "bar" + echo "echo -e foo" +} + +ech.os() { + echo foo >& 2 + echo foo >&bar + echo foo >& bar +} + +echoes() { + echo "abc\nxyz" + echo 'xyz\rabc' + echo foo\cbar + + echo -e "abc\nxyz" + echo -net 'xyz\rabc' + echo -e foo\cbar +} + +foobar.() { + suspend x + suspended x + caller x + complete x + compgen x + declare -a foo +} + +.foobar() { + typeset -x bar + disown 1 + builtin foo + set -B + alias -p + unalias -a +} + +IFS="()" + +ulimit +shopt +type -v bar +time ls +dirs +diff <(tac a) <(tac b) + +pushd + +local foo=bar +local -x foo + +popd + +readonly -f + +echo bar > /dev/tcp +export x +export -x x +export -p x + +sh -x +sh -D +sh --foo +sh +O + +# Brace expansion checks +echo {a,b} +echo {abc},{bcd} + +foobar() +{ + # This is a function +} + + foo.bar() +( + # This is a function with a bad name +) + +foobar@() # foo +{ + # As is this +} + +# This is ok +read -r foo +# but these aren't +read -r +read -p "Would you like to restart the service?" foo bar +read --fish + +source "$BAR" +source '$BAR' +source ~/bar +source a + +# An example from the X maintainer scripts that used to trigger the trap +# bashism check. +trap "message;\ + message \"Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script.\";\ + message;\ + exit 1" HUP INT QUIT TERM + +# Also allow for extended single quotes containing double quotes. +trap 'message; + message "Received signal. Aborting $THIS_PACKAGE package $THIS_SCRIPT script."; + message; + exit 1' HUP INT QUIT TERM + +#DEBHELPER# diff --git a/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values b/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values new file mode 100644 index 0000000..ab87d45 --- /dev/null +++ b/t/recipes/checks/scripts/scripts-bashisms/build-spec/fill-values @@ -0,0 +1,4 @@ +Skeleton: upload-native +Testname: scripts-bashisms +Description: Check bashism detection +Extra-Build-Depends: dash (>= 0.5.10.2) diff --git a/t/recipes/checks/scripts/scripts-bashisms/eval/desc b/t/recipes/checks/scripts/scripts-bashisms/eval/desc new file mode 100644 index 0000000..6063543 --- /dev/null +++ b/t/recipes/checks/scripts/scripts-bashisms/eval/desc @@ -0,0 +1,2 @@ +Testname: scripts-bashisms +Check: scripts diff --git a/t/recipes/checks/scripts/scripts-bashisms/eval/hints b/t/recipes/checks/scripts/scripts-bashisms/eval/hints new file mode 100644 index 0000000..34b6f31 --- /dev/null +++ b/t/recipes/checks/scripts/scripts-bashisms/eval/hints @@ -0,0 +1,14 @@ +scripts-bashisms (binary): read-in-maintainer-script [prerm:7] +scripts-bashisms (binary): read-in-maintainer-script [prerm:51] +scripts-bashisms (binary): read-in-maintainer-script [prerm:50] +scripts-bashisms (binary): read-in-maintainer-script [prerm:49] +scripts-bashisms (binary): read-in-maintainer-script [prerm:48] +scripts-bashisms (binary): read-in-maintainer-script [prerm:47] +scripts-bashisms (binary): read-in-maintainer-script [prerm:166] +scripts-bashisms (binary): read-in-maintainer-script [prerm:165] +scripts-bashisms (binary): read-in-maintainer-script [prerm:164] +scripts-bashisms (binary): read-in-maintainer-script [prerm:162] +scripts-bashisms (binary): read-in-maintainer-script [postinst:14] +scripts-bashisms (binary): maintainer-script-without-set-e [postinst] +scripts-bashisms (binary): maintainer-script-interpreter /bin/sh [prerm] +scripts-bashisms (binary): maintainer-script-interpreter /bin/sh [postinst] -- cgit v1.2.3