traced process should stop by any signal except for SIGKILL,
even if SIG_IGN. (LTP ptrace01)
This commit is contained in:
@@ -839,10 +839,10 @@ do_kill(int pid, int tid, int sig, siginfo_t *info, int ptracecont)
|
|||||||
in check_signal */
|
in check_signal */
|
||||||
rc = 0;
|
rc = 0;
|
||||||
k = tproc->sighandler->action + sig - 1;
|
k = tproc->sighandler->action + sig - 1;
|
||||||
if(k->sa.sa_handler != (void *)1 &&
|
if((sig != SIGKILL && (tproc->ftn->ptrace & PT_TRACED)) ||
|
||||||
(k->sa.sa_handler != NULL ||
|
(k->sa.sa_handler != (void *)1 &&
|
||||||
(tproc->ftn->ptrace & PT_TRACED) ||
|
(k->sa.sa_handler != NULL ||
|
||||||
(sig != SIGCHLD && sig != SIGURG))){
|
(sig != SIGCHLD && sig != SIGURG)))){
|
||||||
struct sig_pending *pending = NULL;
|
struct sig_pending *pending = NULL;
|
||||||
if (sig < 33) { // SIGRTMIN - SIGRTMAX
|
if (sig < 33) { // SIGRTMIN - SIGRTMAX
|
||||||
list_for_each_entry(pending, head, list){
|
list_for_each_entry(pending, head, list){
|
||||||
|
|||||||
Reference in New Issue
Block a user