Python Glossary English

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Сообщить о неточности