From: Aaron Merey Date: Fri, 4 Nov 2022 21:22:40 +0000 (-0400) Subject: debuginfod_find_section: Always update rc with most recent error code X-Git-Tag: elfutils-0.189~62 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4628be9e03db78eaf2b02e9aa6cc677a0b4319ea;p=thirdparty%2Felfutils.git debuginfod_find_section: Always update rc with most recent error code 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 --- diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog index 4d576caec..5678002ab 100644 --- a/debuginfod/ChangeLog +++ b/debuginfod/ChangeLog @@ -1,3 +1,8 @@ +2022-11-04 Aaron Merey + + * debuginfod-client.c (debuginfod_find_section): Ensure rc + is always updated with the most recent error code. + 2022-11-03 Frank Ch. Eigler * debuginfod.cxx (handle_buildid): Correctly manage lifetime diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c index f48e32cc8..99da05ef0 100644 --- a/debuginfod/debuginfod-client.c +++ b/debuginfod/debuginfod-client.c @@ -1944,7 +1944,8 @@ debuginfod_find_section (debuginfod_client *client, 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) @@ -1952,6 +1953,9 @@ debuginfod_find_section (debuginfod_client *client, 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);