mirror of
https://github.com/DragonOS-Community/DragonOS.git
synced 2025-06-09 11:16:47 +00:00
🆕 检测是否为elf文件
This commit is contained in:
parent
d6ea8893e7
commit
b0a7ec633d
@ -1 +1,33 @@
|
|||||||
#include "elf.h"
|
#include "elf.h"
|
||||||
|
#include <common/unistd.h>
|
||||||
|
#include <common/glib.h>
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 校验是否为ELF文件
|
||||||
|
*
|
||||||
|
* @param ehdr
|
||||||
|
*/
|
||||||
|
bool elf_check(void *ehdr)
|
||||||
|
{
|
||||||
|
Elf32_Ehdr *ptr = (Elf32_Ehdr *)ehdr;
|
||||||
|
bool flag = ptr->e_ident[EI_MAG0] == ELFMAG0 && ptr->e_ident[EI_MAG1] == ELFMAG1 && ptr->e_ident[EI_MAG2] == ELFMAG2 && ptr->e_ident[EI_MAG3] == ELFMAG3;
|
||||||
|
|
||||||
|
// 标头已经不符合要求
|
||||||
|
if (!flag)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检验EI_CLASS是否合法
|
||||||
|
if (ptr->e_ident[EI_CLASS] == 0 || ptr->e_ident[EI_CLASS] > 2)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检验EI_DATA是否合法
|
||||||
|
if (ptr->e_ident[EI_DATA] == 0 || ptr->e_ident[EI_DATA] > 2)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
// 检验EI_VERSION是否合法
|
||||||
|
if(ptr->e_ident[EI_VERSION]==EV_NONE)
|
||||||
|
return false;
|
||||||
|
// 是elf文件
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -358,3 +358,10 @@ Values in this inclusive range are reserved for OS-specific semantics.
|
|||||||
|
|
||||||
|
|
||||||
// --> end ========== program header =========
|
// --> end ========== program header =========
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 校验是否为ELF文件
|
||||||
|
*
|
||||||
|
* @param ehdr
|
||||||
|
*/
|
||||||
|
bool elf_check(void * ehdr);
|
Loading…
x
Reference in New Issue
Block a user