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