Auto sync2gitlab import of ksh-20120801-255.el8.src.rpm
This commit is contained in:
		
							parent
							
								
									94d304104c
								
							
						
					
					
						commit
						cd9fd2352b
					
				
							
								
								
									
										47
									
								
								ksh-20120801-jobcontrol.patch
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								ksh-20120801-jobcontrol.patch
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,47 @@ | |||||||
|  | From 27909acb584aed231d757d1d63c6c62b57c8e152 Mon Sep 17 00:00:00 2001 | ||||||
|  | From: Vincent Mihalkovic <vmihalko@redhat.com> | ||||||
|  | Date: Mon, 3 Jan 2022 14:03:20 +0100 | ||||||
|  | Subject: [PATCH] Fix race conditions running external commands with job | ||||||
|  |  control on | ||||||
|  | 
 | ||||||
|  | When ksh is compiled with SHOPT_SPAWN (the default), which uses | ||||||
|  | posix_spawn(3) or vfork(2) (via sh_ntfork()) to launch external | ||||||
|  | commands, at least two race conditions occur when launching | ||||||
|  | external commands while job control is active. See: | ||||||
|  | https://bugs.launchpad.net/ubuntu/+source/ksh/+bug/1887863/comments/3 | ||||||
|  | https://www.mail-archive.com/ast-developers@research.att.com/msg00717.html | ||||||
|  | 
 | ||||||
|  | The basic issue is that this performance optimisation is | ||||||
|  | incompatible with job control, because it uses a spawning mechanism | ||||||
|  | that doesn't copy the parent process' memory pages into the child | ||||||
|  | process, therefore no state that involves memory can be set before | ||||||
|  | exec-ing the external program. This makes it impossible to | ||||||
|  | correctly set the terminal's process group ID in the child process, | ||||||
|  | something that is essential for job control to work. | ||||||
|  | 
 | ||||||
|  | src/cmd/ksh93/sh/xec.c: | ||||||
|  | - Use sh_fork() instead of sh_ntfork() if job control is active.
 | ||||||
|  |   This uses fork(2), which is 30%-ish slower on most sytems, but | ||||||
|  |   allows for correctly setting the terminal process group. | ||||||
|  | 
 | ||||||
|  | Fixes: https://github.com/ksh93/ksh/issues/79 | ||||||
|  | ---
 | ||||||
|  |  src/cmd/ksh93/sh/xec.c | 2 +- | ||||||
|  |  1 file changed, 1 insertion(+), 1 deletion(-) | ||||||
|  | 
 | ||||||
|  | diff --git a/src/cmd/ksh93/sh/xec.c b/src/cmd/ksh93/sh/xec.c
 | ||||||
|  | index ae13178..be57a6b 100644
 | ||||||
|  | --- a/src/cmd/ksh93/sh/xec.c
 | ||||||
|  | +++ b/src/cmd/ksh93/sh/xec.c
 | ||||||
|  | @@ -1737,7 +1737,7 @@ int sh_exec(register const Shnode_t *t, int flags)
 | ||||||
|  |  #else | ||||||
|  |  #if SHOPT_SPAWN | ||||||
|  |  #   ifdef _lib_fork | ||||||
|  | -				if(com)
 | ||||||
|  | +				if(com && !job.jobcontrol)
 | ||||||
|  |  					parent = sh_ntfork(shp,t,com,&jobid,ntflag); | ||||||
|  |  				else | ||||||
|  |  					parent = sh_fork(shp,type,&jobid); | ||||||
|  | -- 
 | ||||||
|  | 2.31.1 | ||||||
|  | 
 | ||||||
							
								
								
									
										9
									
								
								ksh.spec
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								ksh.spec
									
									
									
									
									
								
							| @ -6,7 +6,7 @@ Summary:      The Original ATT Korn Shell | |||||||
| URL:          http://www.kornshell.com/ | URL:          http://www.kornshell.com/ | ||||||
| License:      EPL | License:      EPL | ||||||
| Version:      %{releasedate} | Version:      %{releasedate} | ||||||
| Release:      254%{?dist} | Release:      255%{?dist} | ||||||
| Source0:      http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz | Source0:      http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{release_date}.tgz | ||||||
| Source1:      http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz | Source1:      http://www.research.att.com/~gsf/download/tgz/INIT.%{release_date}.tgz | ||||||
| Source2:      kshcomp.conf | Source2:      kshcomp.conf | ||||||
| @ -217,6 +217,9 @@ Patch88: ksh-20120801-annocheck.patch | |||||||
| # rhbz#1790547 | # rhbz#1790547 | ||||||
| Patch89: ksh-20120801-cve-2019-14868.patch | Patch89: ksh-20120801-cve-2019-14868.patch | ||||||
| 
 | 
 | ||||||
|  | # rhbz#1857847 | ||||||
|  | Patch90: ksh-20120801-jobcontrol.patch | ||||||
|  | 
 | ||||||
| Conflicts:    pdksh | Conflicts:    pdksh | ||||||
| Requires: coreutils, diffutils, chkconfig | Requires: coreutils, diffutils, chkconfig | ||||||
| BuildRequires: bison | BuildRequires: bison | ||||||
| @ -369,6 +372,10 @@ fi | |||||||
| %config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf | %config(noreplace) %{_sysconfdir}/binfmt.d/kshcomp.conf | ||||||
| 
 | 
 | ||||||
| %changelog | %changelog | ||||||
|  | * Mon Jan 03 2022 Vincent Mihalkovic <vmihalko@redhat.com> - 20120801-255 | ||||||
|  | - Fix race conditions running external commands with job control on | ||||||
|  |   Resolves: #1857847 | ||||||
|  | 
 | ||||||
| * Thu Feb 06 2020 Siteshwar Vashisht <svashisht@redhat.com> - 20120801-254 | * Thu Feb 06 2020 Siteshwar Vashisht <svashisht@redhat.com> - 20120801-254 | ||||||
| - Bump version number to avoid breaking upgrade path | - Bump version number to avoid breaking upgrade path | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user