Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 15 Oct 2010 15:37:16 +0000 (UTC)
From:      Jilles Tjoelker <jilles@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org
Subject:   svn commit: r213899 - in stable/8: tools/regression/usr.bin/tr usr.bin/tr
Message-ID:  <201010151537.o9FFbG0u066069@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jilles
Date: Fri Oct 15 15:37:16 2010
New Revision: 213899
URL: http://svn.freebsd.org/changeset/base/213899

Log:
  MFC r213284: tr: Fix '[=]=]' equivalence class.
  
  A closing bracket immediately after '[=' should not be treated as special.
  
  Different from the submitted patch, a string ending with '[=' does not cause
  access beyond the terminating '\0'.
  
  PR:		bin/150384
  Submitted by:	Richard Lowe

Added:
  stable/8/tools/regression/usr.bin/tr/regress.0c.out
     - copied unchanged from r213284, head/tools/regression/usr.bin/tr/regress.0c.out
  stable/8/tools/regression/usr.bin/tr/regress.0d.out
     - copied unchanged from r213284, head/tools/regression/usr.bin/tr/regress.0d.out
Modified:
  stable/8/tools/regression/usr.bin/tr/regress.sh
  stable/8/usr.bin/tr/str.c
Directory Properties:
  stable/8/tools/regression/usr.bin/tr/   (props changed)
  stable/8/usr.bin/tr/   (props changed)

Copied: stable/8/tools/regression/usr.bin/tr/regress.0c.out (from r213284, head/tools/regression/usr.bin/tr/regress.0c.out)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/8/tools/regression/usr.bin/tr/regress.0c.out	Fri Oct 15 15:37:16 2010	(r213899, copy of r213284, head/tools/regression/usr.bin/tr/regress.0c.out)
@@ -0,0 +1 @@
+[[[[

Copied: stable/8/tools/regression/usr.bin/tr/regress.0d.out (from r213284, head/tools/regression/usr.bin/tr/regress.0d.out)
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ stable/8/tools/regression/usr.bin/tr/regress.0d.out	Fri Oct 15 15:37:16 2010	(r213899, copy of r213284, head/tools/regression/usr.bin/tr/regress.0d.out)
@@ -0,0 +1 @@
+

Modified: stable/8/tools/regression/usr.bin/tr/regress.sh
==============================================================================
--- stable/8/tools/regression/usr.bin/tr/regress.sh	Fri Oct 15 15:24:59 2010	(r213898)
+++ stable/8/tools/regression/usr.bin/tr/regress.sh	Fri Oct 15 15:37:16 2010	(r213899)
@@ -1,6 +1,6 @@
 # $FreeBSD$
 
-echo 1..12
+echo 1..14
 
 REGRESSION_START($1)
 
@@ -16,5 +16,7 @@ REGRESSION_TEST(`08', `tr "[[:upper:]]" 
 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()

Modified: stable/8/usr.bin/tr/str.c
==============================================================================
--- stable/8/usr.bin/tr/str.c	Fri Oct 15 15:24:59 2010	(r213898)
+++ stable/8/usr.bin/tr/str.c	Fri Oct 15 15:37:16 2010	(r213899)
@@ -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;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010151537.o9FFbG0u066069>