]> git.ipfire.org Git - pakfire.git/commitdiff
file: Remove ELF detection with libelf
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 27 Oct 2024 08:31:00 +0000 (08:31 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 27 Oct 2024 11:37:55 +0000 (11:37 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/libpakfire/file.c
src/libpakfire/include/pakfire/file.h

index ba003ee99944286ee76317b8e6c2ee90cd628099..bd92039f4aeb078b0977a6031b4cd67c9accffdd 100644 (file)
 #include <sys/types.h>
 #include <time.h>
 
+// libarchive
 #include <archive_entry.h>
 
-#include <gelf.h>
-
 #include <pakfire/ctx.h>
 #include <pakfire/constants.h>
 #include <pakfire/digest.h>
@@ -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;
                }
        }
 
index 7a873676fc41a9145394a9ddcb8d316bd284ea57..9d23fbc5296feb30cee0095a84de731377357f27 100644 (file)
@@ -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),