From: Jim Meyering Date: Tue, 2 Feb 2010 07:19:36 +0000 (+0100) Subject: gzip -cdf mishandles some concatenated input streams: test it X-Git-Tag: v1.5~109 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=026eb1815d339e73102e3ae5a61543049ae9423a;p=debian%2Fgzip gzip -cdf mishandles some concatenated input streams: test it * tests/mixed: Exercise "gzip -cdf" bug. * Makefile.am (XFAIL_TESTS): Add it. Mark Adler reported the bug. --- diff --git a/Makefile.am b/Makefile.am index b4e75fc..4263b1d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -99,6 +99,9 @@ check-local: $(FILES_TO_CHECK) $(bin_PROGRAMS) gzip.doc.gz done @echo 'Test succeeded.' +XFAIL_TESTS = \ + tests/mixed + TESTS = \ tests/helin-segv \ tests/hufts \ diff --git a/tests/mixed b/tests/mixed new file mode 100644 index 0000000..0ca8e80 --- /dev/null +++ b/tests/mixed @@ -0,0 +1,52 @@ +#!/bin/sh +# Ensure that gzip -cdf handles mixed compressed/not-compressed data +# Before gzip-1.5, it would produce invalid output. + +# Copyright (C) 2010 Free Software Foundation, Inc. + +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# limit so don't run it by default. + +if test "$VERBOSE" = yes; then + set -x + zgrep --version +fi + +: ${srcdir=.} +. "$srcdir/tests/init.sh" + +printf 'xxx\nyyy\n' > exp2 || framework_failure +printf 'aaa\nbbb\nccc\n' > exp3 || framework_failure + +fail=0 + +(echo xxx; echo yyy) > in || fail=1 +gzip -cdf < in > out || fail=1 +compare out exp2 || fail=1 + +# Uncompressed input, followed by compressed data. +(echo xxx; echo yyy|gzip) > in || fail=1 +gzip -cdf < in > out || fail=1 +compare out exp2 || fail=1 + +# Compressed input, followed by regular (not-compressed) data. +(echo xxx|gzip; echo yyy) > in || fail=1 +gzip -cdf < in > out || fail=1 +compare out exp2 || fail=1 + +(echo xxx|gzip; echo yyy|gzip) > in || fail=1 +gzip -cdf < in > out || fail=1 +compare out exp2 || fail=1 + +Exit $fail