mirror of
https://github.com/reactos/syzkaller.git
synced 2024-11-27 21:30:33 +00:00
122 lines
3.1 KiB
Plaintext
122 lines
3.1 KiB
Plaintext
# Copyright 2018 syzkaller project authors. All rights reserved.
|
|
# Use of this source code is governed by Apache 2 LICENSE that can be found in the LICENSE file.
|
|
|
|
include <uapi/linux/a.out.h>
|
|
include <uapi/linux/elf.h>
|
|
|
|
execve(file ptr[in, filename], argv ptr[in, array[ptr[in, string]]], envp ptr[in, array[ptr[in, string]]])
|
|
execveat(dirfd fd_dir, file ptr[in, filename], argv ptr[in, array[ptr[in, string]]], envp ptr[in, array[ptr[in, string]]], flags flags[at_flags])
|
|
|
|
write$binfmt_script(fd fd, data ptr[in, binfmt_script], len bytesize[data])
|
|
write$binfmt_misc(fd fd, data ptr[in, binfmt_misc], len bytesize[data])
|
|
write$binfmt_aout(fd fd, data ptr[in, binfmt_aout], len bytesize[data])
|
|
write$binfmt_elf32(fd fd, data ptr[in, binfmt_elf32], len bytesize[data])
|
|
write$binfmt_elf64(fd fd, data ptr[in, binfmt_elf64], len bytesize[data])
|
|
|
|
binfmt_script {
|
|
hdr stringnoz["#! "]
|
|
bin stringnoz[filename]
|
|
args array[binfmt_script_arg]
|
|
nl const[0xa, int8]
|
|
data array[int8]
|
|
} [packed]
|
|
|
|
binfmt_script_arg {
|
|
sp const[0x20, int8]
|
|
arg stringnoz
|
|
}
|
|
|
|
binfmt_misc {
|
|
hdr stringnoz[binfmt_misc_headers]
|
|
data array[int8]
|
|
}
|
|
|
|
binfmt_misc_headers = "syz0", "syz1"
|
|
|
|
binfmt_aout {
|
|
exec exec
|
|
data array[int8]
|
|
# Just to make the file of a non-trivial size.
|
|
pad array[array[const[0, int64], 32], 0:10]
|
|
} [packed]
|
|
|
|
exec {
|
|
magic flags[aouthdr_magics, int16]
|
|
machtype int8
|
|
flags int8
|
|
a_text int32[0:1000]
|
|
a_data int32[0:1000]
|
|
a_bss int32
|
|
a_syms int32[0:1000]
|
|
a_entry int32
|
|
a_trsize const[0, int32]
|
|
a_drsize const[0, int32]
|
|
}
|
|
|
|
aouthdr_magics = OMAGIC, NMAGIC, ZMAGIC, QMAGIC
|
|
|
|
type binfmt_elf32 binfmt_elf[int32, elf32_phdr, ELF32_PHDR_SIZE]
|
|
type binfmt_elf64 binfmt_elf[int64, elf64_phdr, ELF64_PHDR_SIZE]
|
|
|
|
type binfmt_elf[ADDR, PHDR, PHENTSIZE] {
|
|
hdr elf_hdr[ADDR, PHENTSIZE]
|
|
phdr array[PHDR, 1:2]
|
|
data array[int8]
|
|
# Just to make the file of a non-trivial size.
|
|
pad array[array[const[0, int64], 32], 0:10]
|
|
} [packed]
|
|
|
|
type elf_hdr[ADDR, PHENTSIZE] {
|
|
e_ident0 const[0x7f, int8]
|
|
e_ident1 const[0x45, int8]
|
|
e_ident2 const[0x4c, int8]
|
|
e_ident3 const[0x46, int8]
|
|
e_ident_class int8
|
|
e_ident_data int8
|
|
e_ident_ver int8
|
|
e_ident_osabi int8
|
|
e_ident_pad int64
|
|
e_type flags[elf_types, int16]
|
|
e_machine flags[elf_machines, int16]
|
|
e_version int32
|
|
e_entry ADDR[0:1000]
|
|
e_phoff bytesize[parent, ADDR]
|
|
e_shoff ADDR[0:1000]
|
|
e_flags int32
|
|
e_ehsize int16
|
|
e_phentsize const[PHENTSIZE, int16]
|
|
e_phnum int16[1:2]
|
|
e_shentsize int16
|
|
e_shnum int16
|
|
e_shstrndx int16
|
|
}
|
|
|
|
elf32_phdr {
|
|
p_type flags[elf_ptypes, int32]
|
|
p_offset int32
|
|
p_vaddr int32
|
|
p_paddr int32
|
|
p_filesz int32
|
|
p_memsz int32
|
|
p_flags int32
|
|
p_align int32
|
|
} [size[ELF32_PHDR_SIZE]]
|
|
|
|
elf64_phdr {
|
|
p_type flags[elf_ptypes, int32]
|
|
p_flags int32
|
|
p_offset int64
|
|
p_vaddr int64
|
|
p_paddr int64
|
|
p_filesz int64
|
|
p_memsz int64
|
|
p_align int64
|
|
} [size[ELF64_PHDR_SIZE]]
|
|
|
|
elf_types = ET_EXEC, ET_DYN
|
|
elf_machines = EM_386, EM_486, EM_X86_64
|
|
elf_ptypes = PT_LOAD, PT_DYNAMIC, PT_INTERP, PT_NOTE, PT_SHLIB, PT_PHDR, PT_TLS, PT_LOOS, PT_LOPROC, PT_GNU_STACK
|
|
|
|
define ELF32_PHDR_SIZE sizeof(struct elf32_phdr)
|
|
define ELF64_PHDR_SIZE sizeof(struct elf64_phdr)
|