1*3117ece4Schristos#!/bin/sh 2*3117ece4Schristos# Before gzip-1.4, this the use of memcpy in inflate_codes could 3*3117ece4Schristos# mistakenly operate on overlapping regions. Exercise that code. 4*3117ece4Schristos 5*3117ece4Schristos# Copyright (C) 2010-2016 Free Software Foundation, Inc. 6*3117ece4Schristos 7*3117ece4Schristos# This program is free software: you can redistribute it and/or modify 8*3117ece4Schristos# it under the terms of the GNU General Public License as published by 9*3117ece4Schristos# the Free Software Foundation, either version 3 of the License, or 10*3117ece4Schristos# (at your option) any later version. 11*3117ece4Schristos 12*3117ece4Schristos# This program is distributed in the hope that it will be useful, 13*3117ece4Schristos# but WITHOUT ANY WARRANTY; without even the implied warranty of 14*3117ece4Schristos# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15*3117ece4Schristos# GNU General Public License for more details. 16*3117ece4Schristos 17*3117ece4Schristos# You should have received a copy of the GNU General Public License 18*3117ece4Schristos# along with this program. If not, see <https://www.gnu.org/licenses/>. 19*3117ece4Schristos# limit so don't run it by default. 20*3117ece4Schristos 21*3117ece4Schristos. "${srcdir=.}/init.sh"; path_prepend_ . 22*3117ece4Schristos 23*3117ece4Schristos# The input must be larger than 32KiB and slightly 24*3117ece4Schristos# less uniform than e.g., all zeros. 25*3117ece4Schristosprintf wxy%032767d 0 | tee in | gzip > in.gz || framework_failure_ 26*3117ece4Schristos 27*3117ece4Schristosfail=0 28*3117ece4Schristos 29*3117ece4Schristos# Before the fix, this would call memcpy with overlapping regions. 30*3117ece4Schristosgzip -dc in.gz > out || fail=1 31*3117ece4Schristos 32*3117ece4Schristoscompare in out || fail=1 33*3117ece4Schristos 34*3117ece4SchristosExit $fail 35