return 0;
}
+// Checks if files in /usr/lib/debug are correct
+static int pakfire_linter_file_check_debug(struct pakfire_linter_file* lfile) {
+ Elf_Scn* symtab = NULL;
+ int r;
+
+ // Fail if this file is not an ELF file
+ if (!pakfire_linter_file_is_elf(lfile))
+ return pakfire_linter_file_error(lfile, "File is not in ELF format");
+
+ switch (pakfire_linter_file_get_elf_type(lfile)) {
+ // Do not check Relocatable Objects
+ case ET_REL:
+ return 0;
+
+ // Check everything else
+ default:
+ break;
+ }
+
+ // Fetch the symbol table
+ r = pakfire_linter_file_get_elf_section(lfile, SHT_SYMTAB, &symtab, NULL, NULL);
+ if (r < 0)
+ return r;
+
+ else if (r > 0)
+ pakfire_linter_file_error(lfile, "Is Stripped");
+
+ return 0;
+}
+
int pakfire_linter_file_lint(struct pakfire_linter_file* lfile) {
int r = 0;
else if (pakfire_file_matches(lfile->file, "/usr/lib/valgrind/*"))
return 0;
+ // Check debug files
+ else if (pakfire_file_matches(lfile->file, "/usr/lib/debug/**"))
+ return pakfire_linter_file_check_debug(lfile);
+
// ELF Checks
if (pakfire_linter_file_is_elf(lfile)) {
// Check if stripped