From 74c5f51de2f9f4982aac5918ab31128b392b4e19 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sat, 26 Oct 2024 16:12:17 +0000 Subject: [PATCH] linter: Check if we have Build IDs Signed-off-by: Michael Tremer --- src/libpakfire/linter-file.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/libpakfire/linter-file.c b/src/libpakfire/linter-file.c index d6b862778..76180f105 100644 --- a/src/libpakfire/linter-file.c +++ b/src/libpakfire/linter-file.c @@ -864,6 +864,27 @@ static int pakfire_linter_file_has_debuglink(struct pakfire_linter_file* lfile) return pakfire_linter_file_elf(lfile, __pakfire_linter_file_has_debuglink, NULL); } +static int __pakfire_linter_file_has_buildid( + struct pakfire_linter_file* lfile, Elf* elf, void* data) { + const void* buildid = NULL; + ssize_t length = 0; + + // Fetch the build ID + length = dwelf_elf_gnu_build_id(elf, &buildid); + if (length < 0) + return length; + + // If length is zero there is no build ID + else if (length == 0) + return pakfire_linter_file_error(lfile, "Missing Build ID"); + + return 0; +} + +static int pakfire_linter_file_has_buildid(struct pakfire_linter_file* lfile) { + return pakfire_linter_file_elf(lfile, __pakfire_linter_file_has_buildid, NULL); +} + int pakfire_linter_file_lint(struct pakfire_linter_file* lfile) { int r = 0; @@ -891,6 +912,11 @@ int pakfire_linter_file_lint(struct pakfire_linter_file* lfile) { if (r < 0) return r; + // Check if we have a build ID + r = pakfire_linter_file_has_buildid(lfile); + if (r < 0) + return r; + // Check if we have a debug link r = pakfire_linter_file_has_debuglink(lfile); if (r < 0) -- 2.39.5