mirror of
https://github.com/genodelabs/genode.git
synced 2025-02-20 17:52:52 +00:00
parent
ecff980761
commit
7ac9a16090
@ -319,7 +319,9 @@ struct Noux::Sysio
|
||||
SYMLINK_ERR_NO_SPACE, SYMLINK_ERR_NO_PERM,
|
||||
SYMLINK_ERR_NAME_TOO_LONG };
|
||||
|
||||
enum Execve_error { EXECVE_NONEXISTENT = Vfs::Directory_service::NUM_GENERAL_ERRORS, EXECVE_NOMEM };
|
||||
enum Execve_error { EXECVE_NONEXISTENT = Vfs::Directory_service::NUM_GENERAL_ERRORS,
|
||||
EXECVE_NOMEM,
|
||||
EXECVE_NOEXEC };
|
||||
enum Fork_error { FORK_NOMEM = Vfs::Directory_service::NUM_GENERAL_ERRORS };
|
||||
enum Select_error { SELECT_ERR_INTERRUPT };
|
||||
|
||||
|
@ -1101,6 +1101,7 @@ namespace {
|
||||
switch (sysio()->error.execve) {
|
||||
case Noux::Sysio::EXECVE_NONEXISTENT: errno = ENOENT; break;
|
||||
case Noux::Sysio::EXECVE_NOMEM: errno = ENOMEM; break;
|
||||
case Noux::Sysio::EXECVE_NOEXEC: errno = ENOEXEC; break;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
@ -296,6 +296,18 @@ bool Noux::Child::syscall(Noux::Session::Syscall sc)
|
||||
break;
|
||||
}
|
||||
|
||||
{
|
||||
Attached_dataspace attached_binary_ds(_env.rm(), binary_ds->ds);
|
||||
char const *binary_addr = attached_binary_ds.local_addr<char const>();
|
||||
if ((binary_addr[0] != 0x7f) ||
|
||||
(binary_addr[1] != 'E') ||
|
||||
(binary_addr[2] != 'L') ||
|
||||
(binary_addr[3] != 'F')) {
|
||||
_sysio.error.execve = Sysio::EXECVE_NOEXEC;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
binary_ds.destruct();
|
||||
|
||||
try {
|
||||
|
Loading…
x
Reference in New Issue
Block a user