fix regression in jaredy’s security patch introduced in R35b
(cid 100487B467E068A55D6 and 10048949D196A7C1390) discovered by Jb_boin: time with a not-TCOM subtree would now trash its string argument (which is the loop variable for TFOR); amend regression testsuite
This commit is contained in:
parent
34036ec32e
commit
2539450588
18
check.t
18
check.t
@ -1,4 +1,4 @@
|
||||
# $MirOS: src/bin/mksh/check.t,v 1.509 2012/01/03 01:40:15 tg Exp $
|
||||
# $MirOS: src/bin/mksh/check.t,v 1.510 2012/01/03 15:32:05 tg Exp $
|
||||
# $OpenBSD: bksl-nl.t,v 1.2 2001/01/28 23:04:56 niklas Exp $
|
||||
# $OpenBSD: history.t,v 1.5 2001/01/28 23:04:56 niklas Exp $
|
||||
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||
@ -8284,7 +8284,7 @@ stdin:
|
||||
#TSELECT
|
||||
select file in *; do echo "<$file>" ; break ; done
|
||||
#TFOR_TTIME
|
||||
for i in {1,2,3} ; do time echo $i ; done
|
||||
time for i in {1,2,3} ; do echo $i ; done
|
||||
#TCASE
|
||||
case $foo in 1) echo eins;& 2) echo zwei ;| *) echo kann net bis drei zählen;; esac
|
||||
#TIF_TBANG_TDBRACKET_TELIF
|
||||
@ -8426,25 +8426,25 @@ expected-stdout:
|
||||
x=$(( select file in * ; do echo "<$file>" ; break ; done ) | tr u x )
|
||||
}
|
||||
inline_TFOR_TTIME() {
|
||||
for i in {1,2,3} ; do time echo $i ; done
|
||||
time for i in {1,2,3} ; do echo $i ; done
|
||||
}
|
||||
inline_TFOR_TTIME() {
|
||||
for i in {1,2,3}
|
||||
time for i in {1,2,3}
|
||||
do
|
||||
time echo $i
|
||||
echo $i
|
||||
done
|
||||
}
|
||||
function comsub_TFOR_TTIME { x=$(
|
||||
for i in {1,2,3} ; do time echo $i ; done
|
||||
time for i in {1,2,3} ; do echo $i ; done
|
||||
); }
|
||||
function comsub_TFOR_TTIME {
|
||||
x=$(for i in {1,2,3} ; do time echo $i ; done )
|
||||
x=$(time for i in {1,2,3} ; do echo $i ; done )
|
||||
}
|
||||
function reread_TFOR_TTIME { x=$((
|
||||
for i in {1,2,3} ; do time echo $i ; done
|
||||
time for i in {1,2,3} ; do echo $i ; done
|
||||
)|tr u x); }
|
||||
function reread_TFOR_TTIME {
|
||||
x=$(( for i in {1,2,3} ; do time echo $i ; done ) | tr u x )
|
||||
x=$(( time for i in {1,2,3} ; do echo $i ; done ) | tr u x )
|
||||
}
|
||||
inline_TCASE() {
|
||||
case $foo in 1) echo eins;& 2) echo zwei ;| *) echo kann net bis drei zählen;; esac
|
||||
|
7
syn.c
7
syn.c
@ -1,7 +1,8 @@
|
||||
/* $OpenBSD: syn.c,v 1.28 2008/07/23 16:34:38 jaredy Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2011
|
||||
* Copyright (c) 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
||||
* 2011, 2012
|
||||
* Thorsten Glaser <tg@mirbsd.org>
|
||||
*
|
||||
* Provided that these terms and disclaimer and all copyright notices
|
||||
@ -22,7 +23,7 @@
|
||||
|
||||
#include "sh.h"
|
||||
|
||||
__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.72 2011/12/29 22:03:15 tg Exp $");
|
||||
__RCSID("$MirOS: src/bin/mksh/syn.c,v 1.73 2012/01/03 15:32:08 tg Exp $");
|
||||
|
||||
extern short subshell_nesting_level;
|
||||
extern void yyskiputf8bom(void);
|
||||
@ -458,7 +459,7 @@ get_command(int cf)
|
||||
case TIME:
|
||||
syniocf &= ~(KEYWORD|sALIAS);
|
||||
t = pipeline(0);
|
||||
if (t) {
|
||||
if (t && t->type == TCOM) {
|
||||
t->str = alloc(2, ATEMP);
|
||||
/* TF_* flags */
|
||||
t->str[0] = '\0';
|
||||
|
Loading…
x
Reference in New Issue
Block a user