[gdb/breakpoints] Fix segfault for catch syscall -1
Using a hello world a.out, I run into a segfault: ... $ gcc hello.c $ gdb -batch a.out -ex "catch syscall -1" -ex r Catchpoint 1 (syscall -1) Aborted (core dumped) ... Fix this by erroring out if a negative syscall number is used in the catch syscall command. Tested on x86_64-linux. gdb/ChangeLog: 2021-02-05 Tom de Vries <tdevries@suse.de> PR breakpoints/27313 * break-catch-syscall.c (catch_syscall_split_args): Reject negative syscall numbers. gdb/testsuite/ChangeLog: 2021-02-05 Tom de Vries <tdevries@suse.de> PR breakpoints/27313 * gdb.base/catch-syscall.exp: Check that "catch syscall -1" is rejected.
This commit is contained in:
parent
bdfea17ea9
commit
0e857c8288
@ -1,3 +1,9 @@
|
|||||||
|
2021-02-05 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
PR breakpoints/27313
|
||||||
|
* break-catch-syscall.c (catch_syscall_split_args): Reject negative
|
||||||
|
syscall numbers.
|
||||||
|
|
||||||
2021-02-05 Tom Tromey <tom@tromey.com>
|
2021-02-05 Tom Tromey <tom@tromey.com>
|
||||||
|
|
||||||
* compile/compile-c-support.c (get_compile_context)
|
* compile/compile-c-support.c (get_compile_context)
|
||||||
|
@ -390,6 +390,8 @@ catch_syscall_split_args (const char *arg)
|
|||||||
syscall_number = (int) strtol (cur_name, &endptr, 0);
|
syscall_number = (int) strtol (cur_name, &endptr, 0);
|
||||||
if (*endptr == '\0')
|
if (*endptr == '\0')
|
||||||
{
|
{
|
||||||
|
if (syscall_number < 0)
|
||||||
|
error (_("Unknown syscall number '%d'."), syscall_number);
|
||||||
get_syscall_by_number (gdbarch, syscall_number, &s);
|
get_syscall_by_number (gdbarch, syscall_number, &s);
|
||||||
result.push_back (s.number);
|
result.push_back (s.number);
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2021-02-05 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
|
PR breakpoints/27313
|
||||||
|
* gdb.base/catch-syscall.exp: Check that "catch syscall -1" is
|
||||||
|
rejected.
|
||||||
|
|
||||||
2021-02-05 Tom de Vries <tdevries@suse.de>
|
2021-02-05 Tom de Vries <tdevries@suse.de>
|
||||||
|
|
||||||
* gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549.
|
* gdb.dwarf2/main-subprogram.exp: Add KFAIL for PR symtab/24549.
|
||||||
|
@ -54,6 +54,9 @@ gdb_test_multiple "continue" $test {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Test-case for PR27313. Verify that negative syscall numbers are refused.
|
||||||
|
gdb_test "catch syscall -1" "Unknown syscall number '-1'\\."
|
||||||
|
|
||||||
# All (but the last) syscalls from the example code. It is filled in
|
# All (but the last) syscalls from the example code. It is filled in
|
||||||
# proc setup_all_syscalls.
|
# proc setup_all_syscalls.
|
||||||
set all_syscalls { }
|
set all_syscalls { }
|
||||||
|
Loading…
Reference in New Issue
Block a user