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;
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)