summaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-10-26 09:41:55 +1030
committerAlan Modra <amodra@gmail.com>2022-10-26 15:34:53 +1030
commit6175be41757e886ce8ef5e792834aced3f5ae397 (patch)
tree966586c6e434728413c6453d7470680eda79c30c /binutils
parent9254cd1fd8682d4a51dc1b13cf8067473d3041ea (diff)
downloadbinutils-gdb-6175be41757e886ce8ef5e792834aced3f5ae397.tar.gz
PR29720, objdump -S crashes if build-id is missing
PR 29720 * objdump.c (slurp_file): Don't call debuginfod_find_source when build_id is NULL.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/objdump.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/binutils/objdump.c b/binutils/objdump.c
index f7b4695c3e8..a4ab0dbd66c 100644
--- a/binutils/objdump.c
+++ b/binutils/objdump.c
@@ -1879,17 +1879,19 @@ slurp_file (const char * fn,
#if HAVE_LIBDEBUGINFOD
if (fd < 0 && use_debuginfod && fn[0] == '/' && abfd != NULL)
{
- unsigned char * build_id;
- debuginfod_client * client;
+ unsigned char *build_id = get_build_id (abfd);
- client = debuginfod_begin ();
- if (client == NULL)
- return NULL;
+ if (build_id)
+ {
+ debuginfod_client *client = debuginfod_begin ();
- build_id = get_build_id (abfd);
- fd = debuginfod_find_source (client, build_id, 0, fn, NULL);
- free (build_id);
- debuginfod_end (client);
+ if (client)
+ {
+ fd = debuginfod_find_source (client, build_id, 0, fn, NULL);
+ debuginfod_end (client);
+ }
+ free (build_id);
+ }
}
#endif