mirror of
https://github.com/hermitcore/libhermit.git
synced 2025-03-09 00:00:03 +01:00
add check, if the system starts a valid HermitCore executable
This commit is contained in:
parent
620e1babfe
commit
3f1c5c1d77
2 changed files with 13 additions and 1 deletions
|
@ -237,6 +237,7 @@ static int load_task(load_args_t* largs)
|
|||
fildes_t file;
|
||||
task_t* curr_task = per_core(current_task);
|
||||
int ret = -EINVAL;
|
||||
uint8_t hermit_exec = 0;
|
||||
|
||||
if (!largs)
|
||||
return -EINVAL;
|
||||
|
@ -386,6 +387,10 @@ static int load_task(load_args_t* largs)
|
|||
curr_task->tls_mem_size = prog_header.mem_size;
|
||||
curr_task->tls_file_size = prog_header.file_size;
|
||||
break;
|
||||
case ELF_PT_NOTE:
|
||||
//kprintf("Found note segment: %s\n", (char*)prog_header.virt_addr + 12);
|
||||
hermit_exec |= (strcmp((char*)prog_header.virt_addr + 12, "HermitCore") == 0);
|
||||
break;
|
||||
default:
|
||||
kprintf("Unknown type 0x%lx in program header\n", prog_header.type);
|
||||
}
|
||||
|
@ -411,6 +416,13 @@ static int load_task(load_args_t* largs)
|
|||
goto Lerr;
|
||||
}
|
||||
|
||||
if (BUILTIN_EXPECT(!hermit_exec, 0)) {
|
||||
kprintf("Not a valid executable!\n");
|
||||
ret = -EINVAL;
|
||||
goto Lerr;
|
||||
|
||||
}
|
||||
|
||||
offset = DEFAULT_STACK_SIZE-16;
|
||||
|
||||
// do we have to create a TLS segement?
|
||||
|
|
|
@ -1 +1 @@
|
|||
Subproject commit dbabb39f3d0aa730ca0bc8b735e05206f0de1d16
|
||||
Subproject commit d19417c7db857c7f16728933aa42fdd9eb7a8051
|
Loading…
Add table
Reference in a new issue