summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJiri Olsa <jolsa@kernel.org>2024-11-04 18:52:56 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2024-11-22 15:39:56 +0100
commitd7f53c892ee5f08012a1248210bce7c6db474b86 (patch)
tree8eb0af1385f1d070f5c8b448535f78b9203ee9fd
parent2f424ba1e00e4148c399857e02420de251c598fe (diff)
lib/buildid: Fix build ID parsing logic
The parse_build_id_buf does not account Elf32_Nhdr header size when getting the build id data pointer and returns wrong build id data as result. This is problem only for stable trees that merged 768d731b8a0d fix, the upstream build id code was refactored and returns proper build id. Acked-by: Andrii Nakryiko <andrii@kernel.org> Fixes: 768d731b8a0d ("lib/buildid: harden build ID parsing logic") Signed-off-by: Jiri Olsa <jolsa@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--lib/buildid.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/lib/buildid.c b/lib/buildid.c
index 26007cc99a38..aee749f2647d 100644
--- a/lib/buildid.c
+++ b/lib/buildid.c
@@ -40,7 +40,7 @@ static int parse_build_id_buf(unsigned char *build_id,
name_sz == note_name_sz &&
memcmp(nhdr + 1, note_name, note_name_sz) == 0 &&
desc_sz > 0 && desc_sz <= BUILD_ID_SIZE_MAX) {
- data = note_start + note_off + ALIGN(note_name_sz, 4);
+ data = note_start + note_off + sizeof(Elf32_Nhdr) + ALIGN(note_name_sz, 4);
memcpy(build_id, data, desc_sz);
memset(build_id + desc_sz, 0, BUILD_ID_SIZE_MAX - desc_sz);
if (size)