Kill the child process group, rather than just the immediate child;
this is needed now that su no longer starts a controlling terminal when not running an interactive shell (closes: Debian#713979)
This commit is contained in:
		| @@ -3,6 +3,11 @@ | ||||
| 	* configure.in: Prepare for next point release 4.2. | ||||
| 	* if using the static char* for pw_dir, strdup it so | ||||
| 	  pw_free() can be used. (Closes: Debian#691459)  | ||||
| 	* Kill the child process group, rather than just the  | ||||
| 	  immediate child; this is needed now that su no | ||||
| 	  longer starts a controlling terminal when not running an | ||||
| 	  interactive shell (closes: Debian#713979) | ||||
| 	  Thansk to Colin Watson for the patch. | ||||
|  | ||||
| 2012-05-25  Nicolas François  <nicolas.francois@centraliens.net> | ||||
|  | ||||
|   | ||||
							
								
								
									
										4
									
								
								src/su.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								src/su.c
									
									
									
									
									
								
							| @@ -181,7 +181,7 @@ static bool iswheel (const char *username) | ||||
| static RETSIGTYPE kill_child (int unused(s)) | ||||
| { | ||||
| 	if (0 != pid_child) { | ||||
| 		(void) kill (pid_child, SIGKILL); | ||||
| 		(void) kill (-pid_child, SIGKILL); | ||||
| 		(void) fputs (_(" ...killed.\n"), stderr); | ||||
| 	} else { | ||||
| 		(void) fputs (_(" ...waiting for child to terminate.\n"), | ||||
| @@ -370,7 +370,7 @@ static void prepare_pam_close_session (void) | ||||
| 		(void) fputs ("\n", stderr); | ||||
| 		(void) fputs (_("Session terminated, terminating shell..."), | ||||
| 		              stderr); | ||||
| 		(void) kill (pid_child, caught); | ||||
| 		(void) kill (-pid_child, caught); | ||||
| 	} | ||||
|  | ||||
| 	ret = pam_close_session (pamh, 0); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user