mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-12-19 01:19:41 +08:00
[gdb/corefiles] Fix segfault in core_target_open
On x86_64-freebsd, with test-case gdb.arch/i386-biarch-core.exp I run into a
segfault here in corelow.c:core_target_open:
...
{
gdb::unique_xmalloc_ptr<char> failing_command = make_unique_xstrdup
(bfd_core_file_failing_command (current_program_space->core_bfd ()));
if (failing_command != nullptr)
gdb_printf (_("Core was generated by `%s'.\n"),
failing_command.get ());
}
...
where bfd_core_file_failing_command returns nullptr, so the segfault happens
somewhere during "strdup (nullptr)".
There doesn't seem to be a need to make a copy of the string, so fix this by
dropping the make_unique_xstrdup.
Tested on x86_64-linux.
Tested the test-case on x86_64-freebsd.
Approved-By: Tom Tromey <tom@tromey.com>
PR corefiles/32634
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32634
This commit is contained in:
@@ -1188,11 +1188,11 @@ core_target_open (const char *arg, int from_tty)
|
||||
}
|
||||
else
|
||||
{
|
||||
gdb::unique_xmalloc_ptr<char> failing_command = make_unique_xstrdup
|
||||
(bfd_core_file_failing_command (current_program_space->core_bfd ()));
|
||||
const char *failing_command
|
||||
= bfd_core_file_failing_command (current_program_space->core_bfd ());
|
||||
if (failing_command != nullptr)
|
||||
gdb_printf (_("Core was generated by `%s'.\n"),
|
||||
failing_command.get ());
|
||||
failing_command);
|
||||
}
|
||||
|
||||
/* Clearing any previous state of convenience variables. */
|
||||
|
||||
Reference in New Issue
Block a user