1. 31 8月, 2020 1 次提交
  2. 12 12月, 2013 1 次提交
  3. 31 8月, 2013 1 次提交
    • R
      fix breakage in synccall due to incorrect signal restoration in sigqueue · 7cc49f98
      Rich Felker 提交于
      commit 07827d1a seems to have
      introduced this issue. sigqueue is called from the synccall core, at
      which time, even implementation-internal signals are blocked. however,
      pthread_sigmask removes the implementation-internal signals from the
      old mask before returning, so that a process which began life with
      them blocked will not be able to save a signal mask that has them
      blocked, possibly causing them to become re-blocked later. however,
      this was causing sigqueue to unblock the implementation-internal
      signals during synccall, leading to deadlock.
      7cc49f98
  4. 31 7月, 2011 1 次提交
    • R
      fix race condition in sigqueue · 07827d1a
      Rich Felker 提交于
      this race is fundamentally due to linux's bogus requirement that
      userspace, rather than kernelspace, fill in the siginfo structure. an
      intervening signal handler that calls fork could cause both the parent
      and child process to send signals claiming to be from the parent,
      which could in turn have harmful effects depending on what the
      recipient does with the signal. we simply block all signals for the
      interval between getuid and sigqueue syscalls (much like what raise()
      does already) to prevent the race and make the getuid/sigqueue pair
      atomic.
      
      this will be a non-issue if linux is fixed to validate the siginfo
      structure or fill it in from kernelspace.
      07827d1a
  5. 20 3月, 2011 1 次提交
  6. 11 3月, 2011 1 次提交
    • R
      fix errors in sigqueue (potential information leak, wrong behavior) · dc54a7cb
      Rich Felker 提交于
      1. any padding in the siginfo struct was not necessarily zero-filled,
      so it might have contained private data off the caller's stack.
      
      2. the uid and pid must be filled in from userspace. the previous
      rsyscall fix broke rsyscalls because the values were always incorrect.
      dc54a7cb
  7. 12 2月, 2011 1 次提交