28 lines
828 B
Rust
28 lines
828 B
Rust
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
use molotov_core::elf::ElfBinary;
|
|
|
|
#[test]
|
|
fn test_rejects_non_elf_magic() {
|
|
let dummy = b"NOT_AN_ELF_BINARY";
|
|
let res = ElfBinary::parse(dummy);
|
|
assert!(res.is_err(), "Must reject files without 0x7F 'E' 'L' 'F' magic header");
|
|
}
|
|
|
|
#[test]
|
|
fn test_parses_valid_minimal_elf64() {
|
|
let mut header = vec![0u8; 64];
|
|
// e_ident
|
|
header[0..4].copy_from_slice(b"\x7fELF");
|
|
header[4] = 2; // ELFCLASS64
|
|
header[5] = 1; // ELFDATA2LSB (little endian)
|
|
header[6] = 1; // EV_CURRENT
|
|
// e_type = ET_DYN (3)
|
|
header[16] = 3;
|
|
// e_machine = EM_X86_64 (62)
|
|
header[18] = 62;
|
|
// e_phentsize = 56
|
|
header[54] = 56;
|
|
|
|
let res = ElfBinary::parse(&header);
|
|
assert!(res.is_ok(), "Valid minimal ELF64 dynamic library header must be accepted");
|
|
}
|