144 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			144 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| 
								 | 
							
								# bug in bash up to and including bash-3.0 (including patches)
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								# problem is conflict between CTLNUL used internally to denote quoted null
							 | 
						|||
| 
								 | 
							
								# characters and its value (0x7f) appearing in the expansion of a variable
							 | 
						|||
| 
								 | 
							
								#
							 | 
						|||
| 
								 | 
							
								unset x
							 | 
						|||
| 
								 | 
							
								recho "xxx${x}yyy"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								y=$'\177'
							 | 
						|||
| 
								 | 
							
								recho "xxx${y}yyy"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset y
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset undef
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set ""
							 | 
						|||
| 
								 | 
							
								recho ${undef-"x$*y"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set $'\177'
							 | 
						|||
| 
								 | 
							
								recho ${undef-"x$*y"}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								shift $#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								f()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									recho "-${*-x}-"
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								f ''
							 | 
						|||
| 
								 | 
							
								f $'\177'
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset -f f
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								x=12345
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								recho "${x:6:1}"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								x=
							 | 
						|||
| 
								 | 
							
								recho "${x:0:1}"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								y=$'\177'
							 | 
						|||
| 
								 | 
							
								recho "${y:0:1}"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								y=xxx$'\177'yyy
							 | 
						|||
| 
								 | 
							
								recho "${y:3:3}"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset x y
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								eval tmp=`printf "$'\\\\\x%x'\n" 127`
							 | 
						|||
| 
								 | 
							
								printf "%#1x\n" "'$tmp"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								x=$'\177'
							 | 
						|||
| 
								 | 
							
								printf "%#1x\n" "'$x"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								a=127
							 | 
						|||
| 
								 | 
							
								eval c=\$\'\\$(printf '%o' $a)\'
							 | 
						|||
| 
								 | 
							
								printf "%#1x\n" "'$c"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								recho "$c"
							 | 
						|||
| 
								 | 
							
								recho "$c"@
							 | 
						|||
| 
								 | 
							
								recho @"$c"@
							 | 
						|||
| 
								 | 
							
								recho @"$c"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								recho "$c"
							 | 
						|||
| 
								 | 
							
								recho "$c@"
							 | 
						|||
| 
								 | 
							
								recho "@$c@"
							 | 
						|||
| 
								 | 
							
								recho "@$c"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset tmp x a c
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								qtest()
							 | 
						|||
| 
								 | 
							
								{
							 | 
						|||
| 
								 | 
							
									recho ${#q} "${q}" ${q}
							 | 
						|||
| 
								 | 
							
								}
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								q=$'\x7f'
							 | 
						|||
| 
								 | 
							
								qtest
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								q=${q}a
							 | 
						|||
| 
								 | 
							
								qtest
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								q=$'\x7fa'
							 | 
						|||
| 
								 | 
							
								qtest
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								q="${q}a"
							 | 
						|||
| 
								 | 
							
								qtest
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								unset -f qtest
							 | 
						|||
| 
								 | 
							
								unset q
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set -- ''
							 | 
						|||
| 
								 | 
							
								recho "${*:1}"
							 | 
						|||
| 
								 | 
							
								recho  ${*:1}
							 | 
						|||
| 
								 | 
							
								recho  -${*:1}-
							 | 
						|||
| 
								 | 
							
								recho  -"${*:1}"-
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set $'\177'
							 | 
						|||
| 
								 | 
							
								recho "${*:1}"
							 | 
						|||
| 
								 | 
							
								recho "-${*:1}-"
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								recho  ${*:1}
							 | 
						|||
| 
								 | 
							
								recho -${*:1}-
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								shift $#
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								DEL=`awk 'END{printf("%c", 0+127)}' </dev/null`
							 | 
						|||
| 
								 | 
							
								T1=a\ $DEL
							 | 
						|||
| 
								 | 
							
								T2="a $DEL"
							 | 
						|||
| 
								 | 
							
								set -- x $(echo $T1|wc -c) $(echo $T2|wc -c); shift
							 | 
						|||
| 
								 | 
							
								L1=$1; L2=$2
							 | 
						|||
| 
								 | 
							
								case "$L1/$L2" in
							 | 
						|||
| 
								 | 
							
								4/4) echo ok;;
							 | 
						|||
| 
								 | 
							
								*) echo CTLNUL bug: L1=$L1, L2=$L2;;
							 | 
						|||
| 
								 | 
							
								esac
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								x=$'\177'
							 | 
						|||
| 
								 | 
							
								recho "aaa${x}bbb"
							 | 
						|||
| 
								 | 
							
								recho ccc"${x}"ddd
							 | 
						|||
| 
								 | 
							
								recho eee"$x"fff
							 | 
						|||
| 
								 | 
							
								recho ggg"$(echo $x)"hhh
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								x=
							 | 
						|||
| 
								 | 
							
								recho "aaa${x}bbb"
							 | 
						|||
| 
								 | 
							
								recho ccc"${x}"ddd
							 | 
						|||
| 
								 | 
							
								recho eee"$x"fff
							 | 
						|||
| 
								 | 
							
								recho ggg"$(echo $x)"hhh
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set -- $'\177'
							 | 
						|||
| 
								 | 
							
								recho "aaa${1}bbb"
							 | 
						|||
| 
								 | 
							
								recho ccc"${1}"ddd
							 | 
						|||
| 
								 | 
							
								recho eee"$1"fff
							 | 
						|||
| 
								 | 
							
								recho ggg"$(echo $1)"hhh
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								set -- ""
							 | 
						|||
| 
								 | 
							
								recho "aaa${1}bbb"
							 | 
						|||
| 
								 | 
							
								recho ccc"${1}"ddd
							 | 
						|||
| 
								 | 
							
								recho eee"$1"fff
							 | 
						|||
| 
								 | 
							
								recho ggg"$(echo $1)"hhh
							 | 
						|||
| 
								 | 
							
								
							 | 
						|||
| 
								 | 
							
								recho aaa$'\177'bbb
							 | 
						|||
| 
								 | 
							
								recho ccc""ddd
							 | 
						|||
| 
								 | 
							
								recho "eeefff"
							 | 
						|||
| 
								 | 
							
								recho ggg"$(echo $'\177')"hhh
							 |