- uint8_t bit_value = bytes[4];
- if (!(bit_value == 1 || bit_value == 2)) {
- printf("ERROR: Incorrect bit value: %d\n", bit_value);
- return 1;
- } else if (bit_value == 1) {
- if (!process_elf<Elf32_Ehdr, Elf32_Shdr, Elf32_Dyn>(bytes, st.st_size)) return 1;
+ if (bytes[/*EI_DATA*/5] != 1) {
+ fprintf(stderr, "termux-elf-cleaner: Not little endianness in '%s'\n", file_name);
+ munmap(mem, st.st_size);
+ close(fd);
+ continue;
+ }
+
+ uint8_t const bit_value = bytes[/*EI_CLASS*/4];
+ if (bit_value == 1) {
+ if (!process_elf<Elf32_Ehdr, Elf32_Shdr, Elf32_Dyn>(bytes, st.st_size, file_name)) return 1;
+ } else if (bit_value == 2) {
+ if (!process_elf<Elf64_Ehdr, Elf64_Shdr, Elf64_Dyn>(bytes, st.st_size, file_name)) return 1;