debuginfod_find_section may attempt to download both the debuginfo
and executable matching the given build-id. If neither of these
files can be found, update rc to ensure that we always return an
accurate error code in this case.
Signed-off-by: Aaron Merey <amerey@redhat.com>
+2022-11-04 Aaron Merey <amerey@redhat.com>
+
+ * debuginfod-client.c (debuginfod_find_section): Ensure rc
+ is always updated with the most recent error code.
+
2022-11-03 Frank Ch. Eigler <fche@redhat.com>
* debuginfod.cxx (handle_buildid): Correctly manage lifetime
if (rc == -EEXIST)
{
- /* The section should be found in the executable. */
+ /* Either the debuginfo couldn't be found or the section should
+ be in the executable. */
fd = debuginfod_find_executable (client, build_id,
build_id_len, &tmp_path);
if (fd > 0)
rc = extract_section (fd, section, tmp_path, path);
close (fd);
}
+ else
+ /* Update rc so that we return the most recent error code. */
+ rc = fd;
}
free (tmp_path);