PR: https://gitlab.com/redhat/centos-stream/rpms/python-pip/-/merge_requests/13/
In order to test it: Run this script to create a malformed tarball: """ import tarfile def mkinfo(name, **kwargs): tarinfo = tarfile.TarInfo(name=name) for name, value in kwargs.items(): setattr(tarinfo, name, value) return tarinfo with tarfile.open('evil.tar.gz', 'w:gz') as tf: tf.addfile(mkinfo('./pyproject.toml')) tf.addfile(mkinfo('./tmp', type=tarfile.SYMTYPE, linkname='../../../../../../../../tmp')) tf.addfile(mkinfo('./tmp/poc')) """ Do a python3 -m pip install evil.tar.gz It will fail with: FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-8lk56uxg-build/setup.py' Whereas on the fixed pip it should reject the operation with: "tarfile.OutsideDestinationError: 'tmp/poc' would be extracted to '/tmp/poc', which is outside the destination"
Verified on the PR.