summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/regression/usr.bin/tr/regress.0c.out1
-rw-r--r--tools/regression/usr.bin/tr/regress.0d.out1
-rw-r--r--tools/regression/usr.bin/tr/regress.sh4
-rw-r--r--usr.bin/tr/str.c2
4 files changed, 6 insertions, 2 deletions
diff --git a/tools/regression/usr.bin/tr/regress.0c.out b/tools/regression/usr.bin/tr/regress.0c.out
new file mode 100644
index 0000000..4e125ea
--- /dev/null
+++ b/tools/regression/usr.bin/tr/regress.0c.out
@@ -0,0 +1 @@
+[[[[
diff --git a/tools/regression/usr.bin/tr/regress.0d.out b/tools/regression/usr.bin/tr/regress.0d.out
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/tools/regression/usr.bin/tr/regress.0d.out
@@ -0,0 +1 @@
+
diff --git a/tools/regression/usr.bin/tr/regress.sh b/tools/regression/usr.bin/tr/regress.sh
index c448b6d..badef15 100644
--- a/tools/regression/usr.bin/tr/regress.sh
+++ b/tools/regression/usr.bin/tr/regress.sh
@@ -1,6 +1,6 @@
# $FreeBSD$
-echo 1..12
+echo 1..14
REGRESSION_START($1)
@@ -16,5 +16,7 @@ REGRESSION_TEST(`08', `tr "[[:upper:]]" "[[:lower:]]" < regress2.in | tr -d "[^[
REGRESSION_TEST(`09', `printf "\\f\\r\\n" | tr "\\014\\r" "?#"')
REGRESSION_TEST(`0a', `printf "0xdeadbeef\\n" | tr "x[[:xdigit:]]" "?\$"')
REGRESSION_TEST(`0b', `(tr -cd "[[:xdigit:]]" < regress2.in ; echo)')
+REGRESSION_TEST(`0c', `echo "[[[[]]]]" | tr -d "[=]=]"')
+REGRESSION_TEST(`0d', `echo "]=[" | tr -d "[=]"')
REGRESSION_END()
diff --git a/usr.bin/tr/str.c b/usr.bin/tr/str.c
index 86ae173..06a907b 100644
--- a/usr.bin/tr/str.c
+++ b/usr.bin/tr/str.c
@@ -156,7 +156,7 @@ bracket(s)
s->str = p + 1;
return (1);
case '=': /* "[=equiv=]" */
- if ((p = strchr(s->str + 2, ']')) == NULL)
+ if (s->str[2] == '\0' || (p = strchr(s->str + 3, ']')) == NULL)
return (0);
if (*(p - 1) != '=' || p - s->str < 4)
goto repeat;
OpenPOWER on IntegriCloud