mirror of
				git://git.code.sf.net/p/cdesktopenv/code
				synced 2025-03-09 15:50:02 +00:00 
			
		
		
		
	Stack robustness fixes from OpenSUSE
Three OpenSUSE patches from: https://build.opensuse.org/package/show/shells/ksh As usual, the relevant bug is not currently public: https://bugzilla.opensuse.org/show_bug.cgi?id=844071 src/cmd/ksh93/sh/xec.c: sh_debug()/sh_exec(): - Fix stk restoration. [bnc#844071] src/lib/libast/misc/stk.c: - Fix stk aliasing code. [bnc#844071] (ksh93-stkalias.dif) - Make a unknown location fatal in stkset() so that we get a core dump right away instead of later in an unrelated part of code. (ksh93-stkset-abort.dif) src/lib/libast/man/stk.3, src/lib/libast/man/stak.3: - Update manual with new stkset() behaviour. (93u+m addition) (Note that stak is implemented as macros that translate to stk)
This commit is contained in:
		
							parent
							
								
									c5bd6874ef
								
							
						
					
					
						commit
						4604df9ada
					
				
					 4 changed files with 19 additions and 13 deletions
				
			
		|  | @ -646,8 +646,8 @@ int sh_debug(Shell_t *shp, const char *trap, const char *name, const char *subsc | |||
| 	Stk_t			*stkp=shp->stk; | ||||
| 	struct sh_scoped	savst; | ||||
| 	Namval_t		*np = SH_COMMANDNOD; | ||||
| 	char			*sav = stkptr(stkp,0); | ||||
| 	int			n=4, offset=stktell(stkp); | ||||
| 	char			*sav = stkfreeze(stkp,0); | ||||
| 	const char		*cp = "+=( "; | ||||
| 	Sfio_t			*iop = stkstd; | ||||
| 	short			level; | ||||
|  | @ -702,7 +702,7 @@ int sh_debug(Shell_t *shp, const char *trap, const char *name, const char *subsc | |||
| 	nv_putval(SH_FUNNAMENOD,shp->st.funname,NV_NOFREE); | ||||
| 	shp->st = savst; | ||||
| 	if(sav != stkptr(stkp,0)) | ||||
| 		stkset(stkp,sav,0); | ||||
| 		stkset(stkp,sav,offset); | ||||
| 	else | ||||
| 		stkseek(stkp,offset); | ||||
| 	return(n); | ||||
|  | @ -962,7 +962,7 @@ int sh_exec(register const Shnode_t *t, int flags) | |||
| 		int		ntflag = 0; | ||||
| #endif | ||||
| 		int		topfd = shp->topfd; | ||||
| 		char 		*sav=stkptr(stkp,0); | ||||
| 		char 		*sav=stkfreeze(stkp,0); | ||||
| 		char		*cp=0, **com=0, *comn; | ||||
| 		int		argn; | ||||
| 		int 		skipexitset = 0; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue