[femu_test] Prevent remote command execution in the FEMU guest. See https://fxbug.dev/80614. Change-Id: I718fa63881f71fb5640dbf987dd0518390017849 Reviewed-on: https://flutter-review.googlesource.com/c/recipes/+/15480 Reviewed-by: David Worsham <dworsham@google.com> Reviewed-by: Keyong Han <keyonghan@google.com> Commit-Queue: Darren Chan <chandarren@google.com>
diff --git a/recipes/femu_test.resources/run_vdl_test.sh b/recipes/femu_test.resources/run_vdl_test.sh index 8e21a72..42c6de9 100644 --- a/recipes/femu_test.resources/run_vdl_test.sh +++ b/recipes/femu_test.resources/run_vdl_test.sh
@@ -79,12 +79,39 @@ shift ;; -t=*|--run_test=*) + # Prevent command injection. It's safer to specify every character + # rather than using ranges: https://unix.stackexchange.com/a/355676. + # + # https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package-name + # describes the set of allowed characters in package names. + case "${arg#*=}" in *[!0123456789abcdefghijklmnopqrstuvwxyz\-_.]*) + echo "Invalid argument for --run_test: ${arg#*=}" + exit 1 + ;; + esac RUN_TESTS+="${arg#*=}" ;; --test_suite=*) + # Prevent command injection. It's safer to specify every character + # rather than using ranges: https://unix.stackexchange.com/a/355676. + # + # https://fuchsia.dev/fuchsia-src/concepts/packages/package_url#package-name + # describes the set of allowed characters in package names. + case "${arg#*=}" in *[!0123456789abcdefghijklmnopqrstuvwxyz\-_.]*) + echo "Invalid argument for --test_suite: ${arg#*=}" + exit 1 + ;; + esac TEST_SUITES+="${arg#*=}" ;; -t=*|--test_args=*) + # Prevent command injection. It's safer to specify every character + # rather than using ranges: https://unix.stackexchange.com/a/355676. + case "${arg#*=}" in *[!0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\-_.:=*\ ]*) + echo "Invalid argument for --test_args: ${arg#*=}" + exit 1 + ;; + esac TEST_ARGS+="${arg#*=}" ;; *)