# HG changeset patch # User Tomas Klacko # Date 1395317285 25200 # Node ID d9071f35b6d438f834380d64615c89825fcf8125 # Parent 5b038555a590b33216c9e9e9c2dafc3b707f1566 17851169 ksh93 core dump in sh_assignok() function diff -r 5b038555a590 -r d9071f35b6d4 components/ksh93/Makefile --- a/components/ksh93/Makefile Thu Mar 20 04:02:54 2014 -0700 +++ b/components/ksh93/Makefile Thu Mar 20 05:08:05 2014 -0700 @@ -78,7 +78,7 @@ Bug15794787,15819673.patch \ Bug15808407.patch Bug17714341.patch \ 17432413.patch 17824699.patch \ - 17435456.patch + 17435456.patch 17851169.patch # Fixup HOSTTYPE to match uname output and bits HOSTTYPE32=sol11.$(shell uname -p) diff -r 5b038555a590 -r d9071f35b6d4 components/ksh93/patches/17851169.patch --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/components/ksh93/patches/17851169.patch Thu Mar 20 05:08:05 2014 -0700 @@ -0,0 +1,32 @@ +http://lists.research.att.com/pipermail/ast-developers/2014q1/003809.html +--- +--- a/src/cmd/ksh93/sh/subshell.c ++++ b/src/cmd/ksh93/sh/subshell.c +@@ -234,15 +234,22 @@ Namval_t *sh_assignok(register Namval_t *np,int add) + { + register Namval_t *mp; + register struct Link *lp; +- register struct subshell *sp = (struct subshell*)subshell_data; +- Shell_t *shp = sp->shp; +- Dt_t *dp= shp->var_tree; ++ register struct subshell *sp; ++ Shell_t *shp; ++ Dt_t *dp; + Namval_t *mpnext; + Namarr_t *ap; + int save; ++ ++ sp = (struct subshell*)subshell_data; ++ + /* don't bother with this */ +- if(!sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD) ++ if(!sp || !sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD) + return(np); ++ ++ shp = sp->shp; ++ dp = shp->var_tree; ++ + if((ap=nv_arrayptr(np)) && (mp=nv_opensub(np))) + { + shp->last_root = ap->table; +