From 65fcf2eb3c4fceb81887bd969e68ceae8613e26e Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Sun, 27 Oct 2024 08:31:00 +0000 Subject: [PATCH] file: Remove ELF detection with libelf Signed-off-by: Michael Tremer --- src/libpakfire/file.c | 67 +-------------------------- src/libpakfire/include/pakfire/file.h | 1 - 2 files changed, 1 insertion(+), 67 deletions(-) diff --git a/src/libpakfire/file.c b/src/libpakfire/file.c index ba003ee99..bd92039f4 100644 --- a/src/libpakfire/file.c +++ b/src/libpakfire/file.c @@ -31,10 +31,9 @@ #include #include +// libarchive #include -#include - #include #include #include @@ -1308,17 +1307,6 @@ PAKFIRE_EXPORT int pakfire_file_set_mimetype( Classification */ -static int setup_libelf(struct pakfire_ctx* ctx) { - // Initialize libelf - if (elf_version(EV_CURRENT) == EV_NONE) { - ERROR(ctx, "Could not initialize libelf: %s\n", elf_errmsg(-1)); - - return 1; - } - - return 0; -} - static int pakfire_file_classify_mode(struct pakfire_file* file) { const mode_t mode = pakfire_file_get_mode(file); @@ -1410,54 +1398,6 @@ static int pakfire_file_classify_magic(struct pakfire_file* file) { return 0; } -static int pakfire_file_classify_elf(struct pakfire_file* file) { - FILE* f = NULL; - Elf* elf = NULL; - int r; - - // Don't run this if we already know that file is an ELF file - if (file->class & PAKFIRE_FILE_ELF) - return 0; - - // Setup libelf - r = setup_libelf(file->ctx); - if (r) - return r; - - // Open the file - f = pakfire_file_open(file); - if (!f) { - ERROR(file->ctx, "Could not open %s: %m\n", pakfire_file_get_path(file)); - return 1; - } - - // Try to open the ELF file - elf = elf_begin(fileno(f), ELF_C_READ, NULL); - if (!elf) { - // We fail silently here, because this file might be in a different format - goto ERROR; - } - - switch (elf_kind(elf)) { - // Mark this file as an ELF file - case ELF_K_ELF: - file->class |= PAKFIRE_FILE_ELF; - break; - - // Ignore everything else - default: - break; - } - -ERROR: - if (elf) - elf_end(elf); - if (f) - fclose(f); - - return 0; -} - int pakfire_file_classify(struct pakfire_file* file) { int r; @@ -1478,11 +1418,6 @@ int pakfire_file_classify(struct pakfire_file* file) { r = pakfire_file_classify_magic(file); if (r) goto ERROR; - - // Check if the file is an ELF file - r = pakfire_file_classify_elf(file); - if (r) - goto ERROR; } } diff --git a/src/libpakfire/include/pakfire/file.h b/src/libpakfire/include/pakfire/file.h index 7a873676f..9d23fbc52 100644 --- a/src/libpakfire/include/pakfire/file.h +++ b/src/libpakfire/include/pakfire/file.h @@ -123,7 +123,6 @@ enum pakfire_file_classes { PAKFIRE_FILE_EXECUTABLE = (1 << 7), // The rest - PAKFIRE_FILE_ELF = (1 << 8), PAKFIRE_FILE_PERL = (1 << 10), PAKFIRE_FILE_STATIC_LIBRARY = (1 << 11), PAKFIRE_FILE_LIBTOOL_ARCHIVE = (1 << 12), -- 2.39.5