From c52ce603561128ca3b9bc626f27abd8cda09b4d6 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Mon, 10 Oct 2022 16:24:38 +0200 Subject: [PATCH] [gdb/testsuite] Detect trailing ^C/^D in command Detect a trailing ^C/^D in the command argument of gdb_test_multiple, and error out. Tested on x86_64-linux. --- gdb/testsuite/gdb.testsuite/gdb-test.exp | 34 +++++++++++++++++++----- gdb/testsuite/lib/gdb.exp | 4 +++ 2 files changed, 32 insertions(+), 6 deletions(-) diff --git a/gdb/testsuite/gdb.testsuite/gdb-test.exp b/gdb/testsuite/gdb.testsuite/gdb-test.exp index 2ce8eb31d73..e891f81e7b0 100644 --- a/gdb/testsuite/gdb.testsuite/gdb-test.exp +++ b/gdb/testsuite/gdb.testsuite/gdb-test.exp @@ -19,10 +19,32 @@ clean_restart # Check that a command with trailing newline triggers an error. -set results [catch { - gdb_test "pwd\n" ".*" "cmd with trailing newline" -} output] +with_test_prefix "cmd with trailing newline" { + set results [catch { + gdb_test "pwd\n" ".*" "pwd" + } output] -gdb_assert { $results == 1 } -set expected_error_msg "Invalid trailing newline in \"pwd\n\" command" -gdb_assert { [string equal $output $expected_error_msg] } + gdb_assert { $results == 1 } + set expected_error_msg "Invalid trailing newline in \"pwd\n\" command" + gdb_assert { [string equal $output $expected_error_msg] } +} + +with_test_prefix "cmd with trailing control code" { + foreach_with_prefix control_code {^C ^D} { + switch $control_code { + ^C { + set cmd "\003" + } + ^D { + set cmd "\004" + } + } + set results [catch { + gdb_test $cmd ".*" "control code" + } output] + + gdb_assert { $results == 1 } + set expected_error_msg "Invalid trailing control code in \"$cmd\" command" + gdb_assert { [string equal $output $expected_error_msg] } + } +} diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 5f0acfaa530..ac28ede1b08 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -1003,6 +1003,10 @@ proc gdb_test_multiple { command message args } { error "Invalid trailing newline in \"$command\" command" } + if [string match "*\[\003\004\]" $command] { + error "Invalid trailing control code in \"$command\" command" + } + if [string match "*\[\r\n\]*" $message] { error "Invalid newline in \"$message\" test" } -- 2.30.2