ash: fix obscure case of replacing + globbing + backslashes

function                                             old     new   delta
subevalvar                                          1152    1178     +26
readtoken1                                          3267    3275      +8
redirect                                            1284    1286      +2
expandarg                                            957     958      +1
expdir                                                 4       -      -4
evalcommand                                         1219    1209     -10
expmeta                                              481     469     -12
------------------------------------------------------------------------------
(add/remove: 0/1 grow/shrink: 4/2 up/down: 37/-26)             Total: 11 bytes

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko
2010-06-26 22:55:44 +02:00
parent b768aeb164
commit fd33e17a2b
3 changed files with 52 additions and 21 deletions

View File

@ -0,0 +1,10 @@
192\.168\.0\.1
192\.168\.0\.1[
192\.168\.0\.1[
192\\.168\\.0\\.1[
192\.168\.0\.1[
192\.168\.0\.1
192\.168\.0\.1[
192\.168\.0\.1[
192\\.168\\.0\\.1[
192\.168\.0\.1[

View File

@ -0,0 +1,21 @@
# The bug here was triggered by:
# * performin pathname expansion because we see [
# * replace operator did not escape \ in replace string
IP=192.168.0.1
rm -f '192.168.0.1['
echo "${IP//./\\.}"
echo "${IP//./\\.}"'[' # bug was here
echo "${IP//./\\.}[" # bug was here
echo "${IP//./\\\\.}[" # bug was here
echo "192\.168\.0\.1["
echo >'192.168.0.1['
echo "${IP//./\\.}"
echo "${IP//./\\.}"'[' # bug was here
echo "${IP//./\\.}[" # bug was here
echo "${IP//./\\\\.}[" # bug was here
echo "192\.168\.0\.1["
rm -f '192.168.0.1['