diff options
author | Aaron Merey <amerey@redhat.com> | 2022-04-25 11:10:46 -0400 |
---|---|---|
committer | Aaron Merey <amerey@redhat.com> | 2022-04-25 11:10:46 -0400 |
commit | 08e448456e27339aeb326828d44069028518038a (patch) | |
tree | 50e335b6c206c4b4631acf10aaa04b0d931df7a8 | |
parent | 55fee962676fbff60c6b0469305bcb077910d64f (diff) | |
download | elfutils-08e448456e27339aeb326828d44069028518038a.tar.gz |
debuginfod: ensure X-DEBUGINFOD-SIZE contains file size
For archived files X-DEBUGINFOD-SIZE currently contains the size of the
archive instead of the size of the uncompressed file. Fix this.
Also add testcases to verify X-DEBUGINFOD-SIZE contains uncompressed
file sizes.
Signed-off-by: Aaron Merey <amerey@redhat.com>
-rw-r--r-- | debuginfod/debuginfod.cxx | 2 | ||||
-rwxr-xr-x | tests/run-debuginfod-response-headers.sh | 8 |
2 files changed, 9 insertions, 1 deletions
diff --git a/debuginfod/debuginfod.cxx b/debuginfod/debuginfod.cxx index adca8208..4aaf41c0 100644 --- a/debuginfod/debuginfod.cxx +++ b/debuginfod/debuginfod.cxx @@ -1790,7 +1790,7 @@ handle_buildid_r_match (bool internal_req_p, add_mhd_response_header (r, "Content-Type", "application/octet-stream"); add_mhd_response_header (r, "X-DEBUGINFOD-SIZE", - to_string(fs.st_size).c_str()); + to_string(archive_entry_size(e)).c_str()); add_mhd_response_header (r, "X-DEBUGINFOD-ARCHIVE", b_source0.c_str()); add_mhd_response_header (r, "X-DEBUGINFOD-FILE", file.c_str()); diff --git a/tests/run-debuginfod-response-headers.sh b/tests/run-debuginfod-response-headers.sh index 10b2ab49..62c43887 100755 --- a/tests/run-debuginfod-response-headers.sh +++ b/tests/run-debuginfod-response-headers.sh @@ -86,6 +86,14 @@ grep 'X-DEBUGINFOD-FILE: ' vlog-find$PORT1.2 grep 'X-DEBUGINFOD-SIZE: ' vlog-find$PORT1.2 grep 'X-DEBUGINFOD-ARCHIVE: ' vlog-find$PORT1.2 +# Check that X-DEBUGINFOD-SIZE matches the size of each file +for file in vlog-find$PORT1.1 vlog-find$PORT1.2 +do + st_size=$(stat -c%s $(tail -n 1 $file)) + x_debuginfod_size=$(grep 'X-DEBUGINFOD-SIZE' $file | egrep -o '[0-9]+') + test $st_size -eq $x_debuginfod_size +done + kill $PID1 wait $PID1 PID1=0 |