Hi,

(adding Vladimir Serbinenko to Cc)

Glenn Washburn wrote:
> --- a/tests/util/grub-shell-luks-tester.in
> +++ b/tests/util/grub-shell-luks-tester.in
> @@ -143,6 +143,7 @@ fi
>
>  # Make sure that the dm-crypto device is shutdown
>  cleanup() {
> +    RET=$?
>      if [ -e "$luksdev" ]; then
>          cryptsetup close "$luksdev"
>      fi

The change itself looks good to me.


But i think that there is
  set -e
missing in
  tests/util/grub-shell-luks-tester.in
and possibly in
  tests/grub_cmd_cryptomount.in

At least inserted commands:
  echo "grub_cmd_cryptomount.in: $(set -o | grep errexit)"
  echo "grub-shell-luks-tester.in: $(set -o | grep errexit)" 
>>/tmp/grub-shell-luks-tester.errexit.log
say in grub_cmd_cryptomount.log and grub-shell-luks-tester.errexit.log:
  grub_cmd_cryptomount: errexit           off
  grub-shell-luks-tester.in: errexit              off

The neighbors of grub-shell-luks-tester.in have such a "set -e":
  tests/util/grub-fs-tester.in
  tests/util/grub-shell-tester.in
  tests/util/grub-shell.in

Many tests/*.in have it too. So i propose to add it to
  tests/grub_cmd_cryptomount.in
as well.


I came to this while trying whether it is it guaranteed that "$?" is
always meaningful, given the fact that cleanup() can be called from
various places in the script by
  trap cleanup EXIT INT TERM KILL QUIT

My experiment was to press Ctrl+C while this shell code was sleeping

  cleanup() {
    RET=$?
    echo "RET=$RET"
  }
  trap cleanup EXIT INT TERM KILL QUIT
  sleep 10
  ls /notexisting

I got two output lines:

  RET=130
  RET=2

So without "set -e" cleanup() can be called more than once.
I think that grub-shell-luks-tester.in does not expects this.


Have a nice day :)

Thomas


_______________________________________________
Grub-devel mailing list
Grub-devel@gnu.org
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to