1
0
Fork 0
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:
Stefan Lankes 2015-10-16 07:11:45 +02:00
parent 620e1babfe
commit 3f1c5c1d77
2 changed files with 13 additions and 1 deletions

View file

@ -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