Dr. Werner Fink 2012-02-16 13:19:50 +00:00 committed by Git OBS Bridge
parent d35793240d
commit 5b6d55b93b
3 changed files with 28 additions and 2 deletions

View File

@ -1,3 +1,8 @@
-------------------------------------------------------------------
Tue Feb 14 15:36:22 UTC 2012 - werner@suse.de
- Fix a nasty crash in IFS handling
-------------------------------------------------------------------
Fri Feb 10 17:11:36 UTC 2012 - werner@suse.de

View File

@ -19,11 +19,10 @@
Name: ksh
%global date 2012-02-02
%global use_suid_exe 0
%if %suse_version > 1210
%global use_suid_exe 1
%global use_opt_bins 1
%else
%global use_suid_exe 0
%global use_opt_bins 0
%endif
%if !0%{?qemu_user_space_build:1}
@ -469,6 +468,7 @@ fi
if test $((IGNORED & SIGPIPE)) -eq 0 ; then
${SHELL} -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10
fi
${SHELL} -c 'function g { IFS= ; }; function f { typeset IFS; (g); : $V ; }; f; f'
LANG=en_US.UTF-8
strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 400
strace $MEMORY -o '!%{S:31}' ${SHELL} %{S:10} 4000
@ -482,6 +482,7 @@ fi
if test $((IGNORED & SIGPIPE)) -eq 0 ; then
${SHELL} -c 'g="false"; trap "print -u2 PIPED; \$g && exit 0 ; g=true" PIPE ; while true ; do echo hello ; done' | head -n 10
fi
${SHELL} -c 'function g { IFS= ; }; function f { typeset IFS; (g); : $V ; }; f; f'
LANG=POSIX
killall -q -s 9 ${SHELL} || true
popd

View File

@ -487,3 +487,23 @@
chmodf = lchmod;
goto commit;
#else
--- src/cmd/ksh93/sh/init.c
+++ src/cmd/ksh93/sh/init.c 2012-02-16 13:03:34.073933754 +0000
@@ -512,9 +512,14 @@ static void put_ifs(register Namval_t* n
ip->ifsnp = 0;
if(!val)
{
- fp = nv_stack(np, NIL(Namfun_t*));
- if(fp && !fp->nofree)
- free((void*)fp);
+ Namfun_t *xp = nv_stack(np, NIL(Namfun_t*));
+ if(xp)
+ {
+ if(xp == fp)
+ xp->nofree = 1;
+ if(xp->nofree == 0)
+ free((void*)xp);
+ }
}
if(val != np->nvalue.cp)
nv_putv(np, val, flags, fp);