From 827462caad3e8c430f546c12476dff4f6d78e0f8 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 21 Mar 2023 13:52:57 +0100 Subject: [PATCH] [gdb/testsuite] Check remote_exec results in board files Make sure the result of each remote_exec in gdb/testsuite/boards/*.exp is checked. Tested on x86_64-linux. --- gdb/testsuite/boards/local-remote-host.exp | 45 +++++++++++-------- .../boards/remote-gdbserver-on-localhost.exp | 14 +++--- 2 files changed, 36 insertions(+), 23 deletions(-) diff --git a/gdb/testsuite/boards/local-remote-host.exp b/gdb/testsuite/boards/local-remote-host.exp index 021b2203d33..e8ac676f788 100644 --- a/gdb/testsuite/boards/local-remote-host.exp +++ b/gdb/testsuite/boards/local-remote-host.exp @@ -32,30 +32,39 @@ if { [info exists REMOTE_HOST_USERNAME] } { set_board_info username $env(USER) } -# Handle separate test account. -if { [board_info $board username] != $env(USER) } { - # We're pretending that some local user account is remote host. - # Make things a bit more realistic by restricting file permissions. - - # Make sure remote host can't see files on build. - remote_exec build "chmod go-rx $objdir" - - # Make sure build can't see files on remote host. We can't use - # remote_exec host, because we're in the middle of parsing the - # host board. - remote_exec build \ - "[board_info $board rsh_prog] \ - -l [board_info $board username] \ - [board_info $board hostname] \ - chmod go-rx ." -} - # The ssh key should be correctly set up that you ssh to localhost # without having to type password. set_board_info rsh_prog /usr/bin/ssh set_board_info rcp_prog /usr/bin/scp set_board_info file_transfer "rsh" +save_vars {rsh_cmd res} { + set rsh_cmd \ + [join \ + [list \ + [board_info $board rsh_prog] \ + -l [board_info $board username] \ + [board_info $board hostname]]] + + # Handle separate test account. + if { [board_info $board username] != $env(USER) } { + # We're pretending that some local user account is remote host. + # Make things a bit more realistic by restricting file permissions. + + # Make sure remote host can't see files on build. + set res [remote_exec build "chmod go-rx $objdir"] + if { [lindex $res 0] != 0 } { + error "Couldn't remove permissions for $objdir on build" + } + + # Make sure build can't see files on remote host. + set res [remote_exec build $rsh_cmd "chmod go-rx ."] + if { [lindex $res 0] != 0 } { + error "Couldn't remove permissions for . on host" + } + } +} + # Like standard_spawn, but force pseudo-tty allocation, with 'ssh -t'. proc ${board}_spawn { board cmd } { diff --git a/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp b/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp index a38edacf130..6e3cbc290a5 100644 --- a/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp +++ b/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp @@ -51,12 +51,16 @@ save_vars {rsh_cmd res} { # Make things a bit more realistic by restricting file permissions. # Make sure remote target can't see files on build. - remote_exec build "chmod go-rx $objdir" + set res [remote_exec build "chmod go-rx $objdir"] + if { [lindex $res 0] != 0 } { + error "Couldn't remove permissions for $objdir on build" + } - # Make sure build can't see files on remote target. We can't use - # remote_exec target, because we're in the middle of parsing the - # target board. - remote_exec build $rsh_cmd "chmod go-rx ." + # Make sure build can't see files on remote target. + set res [remote_exec build $rsh_cmd "chmod go-rx ."] + if { [lindex $res 0] != 0 } { + error "Couldn't remove permissions for . on target" + } } # Set remotedir by default, to force remote_download target to give an -- 2.30.2