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: 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: 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 $
|
# $OpenBSD: read.t,v 1.3 2003/03/10 03:48:16 david Exp $
|
||||||
@ -8284,7 +8284,7 @@ stdin:
|
|||||||
#TSELECT
|
#TSELECT
|
||||||
select file in *; do echo "<$file>" ; break ; done
|
select file in *; do echo "<$file>" ; break ; done
|
||||||
#TFOR_TTIME
|
#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
|
#TCASE
|
||||||
case $foo in 1) echo eins;& 2) echo zwei ;| *) echo kann net bis drei zählen;; esac
|
case $foo in 1) echo eins;& 2) echo zwei ;| *) echo kann net bis drei zählen;; esac
|
||||||
#TIF_TBANG_TDBRACKET_TELIF
|
#TIF_TBANG_TDBRACKET_TELIF
|
||||||
@ -8426,25 +8426,25 @@ expected-stdout:
|
|||||||
x=$(( select file in * ; do echo "<$file>" ; break ; done ) | tr u x )
|
x=$(( select file in * ; do echo "<$file>" ; break ; done ) | tr u x )
|
||||||
}
|
}
|
||||||
inline_TFOR_TTIME() {
|
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() {
|
inline_TFOR_TTIME() {
|
||||||
for i in {1,2,3}
|
time for i in {1,2,3}
|
||||||
do
|
do
|
||||||
time echo $i
|
echo $i
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
function comsub_TFOR_TTIME { x=$(
|
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 {
|
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=$((
|
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); }
|
)|tr u x); }
|
||||||
function reread_TFOR_TTIME {
|
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() {
|
inline_TCASE() {
|
||||||
case $foo in 1) echo eins;& 2) echo zwei ;| *) echo kann net bis drei zählen;; esac
|
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 $ */
|
/* $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>
|
* Thorsten Glaser <tg@mirbsd.org>
|
||||||
*
|
*
|
||||||
* Provided that these terms and disclaimer and all copyright notices
|
* Provided that these terms and disclaimer and all copyright notices
|
||||||
@ -22,7 +23,7 @@
|
|||||||
|
|
||||||
#include "sh.h"
|
#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 short subshell_nesting_level;
|
||||||
extern void yyskiputf8bom(void);
|
extern void yyskiputf8bom(void);
|
||||||
@ -458,7 +459,7 @@ get_command(int cf)
|
|||||||
case TIME:
|
case TIME:
|
||||||
syniocf &= ~(KEYWORD|sALIAS);
|
syniocf &= ~(KEYWORD|sALIAS);
|
||||||
t = pipeline(0);
|
t = pipeline(0);
|
||||||
if (t) {
|
if (t && t->type == TCOM) {
|
||||||
t->str = alloc(2, ATEMP);
|
t->str = alloc(2, ATEMP);
|
||||||
/* TF_* flags */
|
/* TF_* flags */
|
||||||
t->str[0] = '\0';
|
t->str[0] = '\0';
|
||||||
|
Loading…
x
Reference in New Issue
Block a user