[3.9] bpo-39039: tarfile raises descriptive exception from zlib.error (GH-27766) (GH-28614)

* during tarfile parsing, a zlib error indicates invalid data
* tarfile.open now raises a descriptive exception from the zlib error
* this makes it clear to the user that they may be trying to open a
  corrupted tar file.
(cherry picked from commit b6fe857250)

Co-authored-by: Jack DeVries <58614260+jdevries3133@users.noreply.github.com>
This commit is contained in:
Łukasz Langa 2021-09-29 12:56:14 +02:00 committed by GitHub
parent c6b5ceae34
commit 7bff4d396f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View file

@ -2345,6 +2345,15 @@ class TarFile(object):
raise ReadError(str(e))
except SubsequentHeaderError as e:
raise ReadError(str(e))
except Exception as e:
try:
import zlib
if isinstance(e, zlib.error):
raise ReadError(f'zlib error: {e}')
else:
raise e
except ImportError:
raise e
break
if tarinfo is not None: