Python 3.12+tarfileисключение
tarfile.LinkOutsideDestinationError
исключения
Исключение фильтра 'data': ссылка в архиве ведёт за пределы целевой папки через '..'.
Синтаксис
except tarfile.LinkOutsideDestinationError:
Родственник AbsoluteLinkError для относительных ссылок: 'up' → '../../etc' выглядит безобидно, но выводит запись наружу. Фильтр 'tar' её пропускает, 'data' отказывает. Сообщение включает абсолютный путь цели, поэтому в выводе для пользователя берут e.tarinfo.name и e.tarinfo.linkname.
Примеры
import tarfile
link = tarfile.TarInfo('up')
link.type = tarfile.SYMTYPE
link.linkname = '../../etc'
print(tarfile.tar_filter(link, 'out').linkname) # → ../../etc — 'tar' пропускает
try:
tarfile.data_filter(link, 'out')
except tarfile.LinkOutsideDestinationError as e:
print(e.tarinfo.name, e.tarinfo.linkname) # → up ../../etc
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности