From: Tom de Vries Date: Fri, 7 Feb 2025 15:17:52 +0000 (+0100) Subject: [gdb/corefiles] Fix segfault in core_target_open X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9dd3d66b79a2907726f407039234ad8677e9df16;p=thirdparty%2Fbinutils-gdb.git [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 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 PR corefiles/32634 Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32634 --- diff --git a/gdb/corelow.c b/gdb/corelow.c index ee57a9c4865..59c16677109 100644 --- a/gdb/corelow.c +++ b/gdb/corelow.c @@ -1188,11 +1188,11 @@ core_target_open (const char *arg, int from_tty) } else { - gdb::unique_xmalloc_ptr 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. */