Forráskód Böngészése

Kernel: Fix sys$waitid(P_ALL, WNOHANG) return value

According to POSIX, waitid() should fill si_signo and si_pid members
with zeroes if there are no children that have already changed their
state by the time of the call. Let's just fill the whole structure
with zeroes to avoid leaking kernel memory.
Sergey Bugaev 5 éve
szülő
commit
1b866bbf42
1 módosított fájl, 1 hozzáadás és 1 törlés
  1. 1 1
      Kernel/Process.cpp

+ 1 - 1
Kernel/Process.cpp

@@ -2314,7 +2314,7 @@ KResultOr<siginfo_t> Process::do_waitid(idtype_t idtype, int id, int options)
         // FIXME: Figure out what WNOHANG should do with stopped children.
         // FIXME: Figure out what WNOHANG should do with stopped children.
         if (idtype == P_ALL) {
         if (idtype == P_ALL) {
             InterruptDisabler disabler;
             InterruptDisabler disabler;
-            siginfo_t siginfo;
+            siginfo_t siginfo = { 0 };
             for_each_child([&siginfo](Process& process) {
             for_each_child([&siginfo](Process& process) {
                 if (process.is_dead())
                 if (process.is_dead())
                     siginfo = reap(process);
                     siginfo = reap(process);