From a4072b593692882423f4db113ab021ad3f6b779d Mon Sep 17 00:00:00 2001 From: Jaakko Heinonen Date: Tue, 17 Aug 2010 15:02:33 +0000 Subject: MFC r200442: Don't read the newline character to line buffer because lines are passed to wcscoll(3). Newline characters could cause incorrect results when comparing lines. Also, if an input line didn't contain a newline character, it was omitted from the output. According to my interpretation, SUSv3 requires that the newline is always printed. Add regression tests for the cases. PR: bin/140976 MFC r200604: - Prevent overflowing of the buffer length variable in getline() by limiting its maximum value. - Exit if reallocf(3) fails in getline(). Failure was silently considered as end-of-file. MFC r204896 by ache: Rewrite input processing to not exit with error on the first EILSEQ found in the input data but fallback to "binary comparison" instead. POSIX says: "The input files shall be text files", nothing more, so the text file with illegal sequence is valid input. BTW, GNU sort does not fails on EILSEQ too. MFC r204928 by ache: Add SIZE_MAX overflow check --- tools/regression/usr.bin/Makefile | 2 +- tools/regression/usr.bin/comm/Makefile | 4 ++++ tools/regression/usr.bin/comm/regress.00.out | 2 ++ tools/regression/usr.bin/comm/regress.00a.in | 5 +++++ tools/regression/usr.bin/comm/regress.00b.in | 2 ++ tools/regression/usr.bin/comm/regress.01.out | 2 ++ tools/regression/usr.bin/comm/regress.01a.in | 5 +++++ tools/regression/usr.bin/comm/regress.01b.in | 2 ++ tools/regression/usr.bin/comm/regress.02.out | 5 +++++ tools/regression/usr.bin/comm/regress.02a.in | 3 +++ tools/regression/usr.bin/comm/regress.02b.in | 3 +++ tools/regression/usr.bin/comm/regress.sh | 13 +++++++++++++ tools/regression/usr.bin/comm/regress.t | 6 ++++++ 13 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 tools/regression/usr.bin/comm/Makefile create mode 100644 tools/regression/usr.bin/comm/regress.00.out create mode 100644 tools/regression/usr.bin/comm/regress.00a.in create mode 100644 tools/regression/usr.bin/comm/regress.00b.in create mode 100644 tools/regression/usr.bin/comm/regress.01.out create mode 100644 tools/regression/usr.bin/comm/regress.01a.in create mode 100644 tools/regression/usr.bin/comm/regress.01b.in create mode 100644 tools/regression/usr.bin/comm/regress.02.out create mode 100644 tools/regression/usr.bin/comm/regress.02a.in create mode 100644 tools/regression/usr.bin/comm/regress.02b.in create mode 100644 tools/regression/usr.bin/comm/regress.sh create mode 100644 tools/regression/usr.bin/comm/regress.t (limited to 'tools') diff --git a/tools/regression/usr.bin/Makefile b/tools/regression/usr.bin/Makefile index c5774b2bd52f..5f7bf653e99a 100644 --- a/tools/regression/usr.bin/Makefile +++ b/tools/regression/usr.bin/Makefile @@ -1,5 +1,5 @@ # $FreeBSD$ -SUBDIR= apply calendar file2c join jot m4 printf sed tr uudecode uuencode xargs lastcomm +SUBDIR= apply calendar comm file2c join jot m4 printf sed tr uudecode uuencode xargs lastcomm .include diff --git a/tools/regression/usr.bin/comm/Makefile b/tools/regression/usr.bin/comm/Makefile new file mode 100644 index 000000000000..b937d41a4e4a --- /dev/null +++ b/tools/regression/usr.bin/comm/Makefile @@ -0,0 +1,4 @@ +# $FreeBSD$ + +all: + @m4 ${.CURDIR}/../regress.m4 ${.CURDIR}/regress.sh | sh /dev/stdin ${.CURDIR} diff --git a/tools/regression/usr.bin/comm/regress.00.out b/tools/regression/usr.bin/comm/regress.00.out new file mode 100644 index 000000000000..89a65daab380 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.00.out @@ -0,0 +1,2 @@ +a b +e f g diff --git a/tools/regression/usr.bin/comm/regress.00a.in b/tools/regression/usr.bin/comm/regress.00a.in new file mode 100644 index 000000000000..85b5cd53a6bf --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.00a.in @@ -0,0 +1,5 @@ +a b +c d +e f +e f g +h i diff --git a/tools/regression/usr.bin/comm/regress.00b.in b/tools/regression/usr.bin/comm/regress.00b.in new file mode 100644 index 000000000000..89a65daab380 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.00b.in @@ -0,0 +1,2 @@ +a b +e f g diff --git a/tools/regression/usr.bin/comm/regress.01.out b/tools/regression/usr.bin/comm/regress.01.out new file mode 100644 index 000000000000..05ab154ecba2 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.01.out @@ -0,0 +1,2 @@ +a b +e f g diff --git a/tools/regression/usr.bin/comm/regress.01a.in b/tools/regression/usr.bin/comm/regress.01a.in new file mode 100644 index 000000000000..78c410b7d759 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.01a.in @@ -0,0 +1,5 @@ +a b +c d +e f +e f g +h i diff --git a/tools/regression/usr.bin/comm/regress.01b.in b/tools/regression/usr.bin/comm/regress.01b.in new file mode 100644 index 000000000000..05ab154ecba2 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.01b.in @@ -0,0 +1,2 @@ +a b +e f g diff --git a/tools/regression/usr.bin/comm/regress.02.out b/tools/regression/usr.bin/comm/regress.02.out new file mode 100644 index 000000000000..a451adbbb245 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.02.out @@ -0,0 +1,5 @@ +a +b + c + d + e diff --git a/tools/regression/usr.bin/comm/regress.02a.in b/tools/regression/usr.bin/comm/regress.02a.in new file mode 100644 index 000000000000..1c943a988877 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.02a.in @@ -0,0 +1,3 @@ +a +b +c \ No newline at end of file diff --git a/tools/regression/usr.bin/comm/regress.02b.in b/tools/regression/usr.bin/comm/regress.02b.in new file mode 100644 index 000000000000..36019ee78df9 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.02b.in @@ -0,0 +1,3 @@ +c +d +e \ No newline at end of file diff --git a/tools/regression/usr.bin/comm/regress.sh b/tools/regression/usr.bin/comm/regress.sh new file mode 100644 index 000000000000..774093f0c424 --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.sh @@ -0,0 +1,13 @@ +# $FreeBSD$ + +LC_ALL=C; export LC_ALL + +echo 1..3 + +REGRESSION_START($1) + +REGRESSION_TEST(`00', `comm -12 regress.00a.in regress.00b.in') +REGRESSION_TEST(`01', `comm -12 regress.01a.in regress.01b.in') +REGRESSION_TEST(`02', `comm regress.02a.in regress.02b.in') + +REGRESSION_END() diff --git a/tools/regression/usr.bin/comm/regress.t b/tools/regression/usr.bin/comm/regress.t new file mode 100644 index 000000000000..a82aacd9886f --- /dev/null +++ b/tools/regression/usr.bin/comm/regress.t @@ -0,0 +1,6 @@ +#!/bin/sh +# $FreeBSD$ + +cd `dirname $0` + +m4 ../regress.m4 regress.sh | sh -- cgit v1.3