From: Michael Tremer Date: Sat, 26 Oct 2024 16:12:17 +0000 (+0000) Subject: linter: Check if we have Build IDs X-Git-Tag: 0.9.30~813 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=74c5f51de2f9f4982aac5918ab31128b392b4e19;p=pakfire.git linter: Check if we have Build IDs Signed-off-by: Michael Tremer --- 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)