From: Darren Tucker Date: Fri, 8 May 2020 11:50:43 +0000 (+1000) Subject: Ensure SA_SIGNAL test only signals itself. X-Git-Tag: V_8_3_P1~9 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4fa9e048c2af26beb7dc2ee9479ff3323e92a7b5;p=thirdparty%2Fopenssh-portable.git Ensure SA_SIGNAL test only signals itself. When the test's child signals its parent and it exits the result of getppid changes. On Ubuntu 20.04 this results in the ppid being that of the GDM session, causing it to exit. Analysis and testing from pedro at ambientworks.net --- diff --git a/configure.ac b/configure.ac index 3712d55db..003b235e5 100644 --- a/configure.ac +++ b/configure.ac @@ -2534,10 +2534,12 @@ static void sighandler(int sig) { } sa.sa_flags = SA_RESTART; (void)sigaction(SIGTERM, &sa, NULL); if ((pid = fork()) == 0) { /* child */ + pid = getppid(); sleep(1); - kill(getppid(), SIGTERM); + kill(pid, SIGTERM); sleep(1); - kill(getppid(), SIGKILL); + if (getppid() == pid) /* if parent did not exit, shoot it */ + kill(pid, SIGKILL); exit(0); } else { /* parent */ r = select(0, NULL, NULL, NULL, NULL);