execve: keep ignored signals

This commit is contained in:
Matheus
2024-08-30 20:29:49 -03:00
parent e442a3de8e
commit 3c8308533a
+8 -1
View File
@@ -284,7 +284,14 @@ static syscallret_t execve(context_t *context, char *upath, char *uargv[], char
}
memset(&_cpu()->thread->signals.stack, 0, sizeof(stack_t));
memset(&proc->signals.actions[0], 0, sizeof(sigaction_t) * NSIG);
// execve keeps information about ignored signals
for (int i = 0; i < NSIG; ++i) {
bool ign = proc->signals.actions[i].address == SIG_IGN;
memset(&proc->signals.actions[i], 0, sizeof(sigaction_t));
if (ign)
proc->signals.actions[i].address = SIG_IGN;
}
vmm_destroycontext(oldctx);
CTX_SP(context) = (uint64_t)stack;