memcpy-abuse.sh 1.2 KB

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