ó
    cÛ–iÞ  ã                   ó^   • S SK r S SKrS SKJr  S SKJrJr   " S S\5      r\R                  rg)é    N)ÚPath)ÚExtractErrorÚTarFilec                   ó¼   ^ • \ rS rSrSr \" \R                  5      rSrU =r$ ! \	 a2    SSS.U 4S jjjr
SSS.U 4S jjjrS rS rS	 rS
 rS rS r SrU =r$ f = f)r   é   z“This TarFile implementation is trying to ameliorate CVE-2007-4559,
where tarfile.TarFiles can step outside of the target directory
using '../../'.
F©Únumeric_ownerc                óD   >• U R                  5         [        TU ]	  XUUS9  g )N)Ú	set_attrsr	   )Ú_safetarfile_checkÚsuperÚextract)ÚselfÚmemberÚpathr   r	   Ú	__class__s        €Ú4/usr/lib/python3/dist-packages/samba/safe_tarfile.pyr   ÚTarFile.extract$   s'   ø€ à×#Ñ#Ô%Ü‰G‰O˜F°IØ*7ð ò 9ó    c                óB   >• U R                  5         [        TU ]	  XUS9  g )Nr   )r   r   Ú
extractall)r   r   Úmembersr	   r   s       €r   r   ÚTarFile.extractall*   s&   ø€ Ø×#Ñ#Ô%Ü‰GÑ˜tØ-:ð ò <r   c                 ó:  • U R                  5        H‡  nU R                  US9(       a  [        SUR                   35      eU R	                  US9(       a  [        SUR
                   35      eU R                  US9(       d  Mq  [        SUR
                   35      e   g )N)Útarinfoz*Attempted directory traversal for member: z6Attempted directory traversal via symlink for member: z3Attempted directory traversal via link for member: )Ú__iter__Ú_is_traversal_attemptr   ÚnameÚ_is_unsafe_symlinkÚlinknameÚ_is_unsafe_link©r   r   s     r   r   ÚTarFile._safetarfile_check/   s²   € ØŸ=™=ž?�Ø×-Ñ-°gÐ-Ö>Ü&ð#Ø#*§<¡< .ð2ó3ð 3ð ×*Ñ*°7Ð*Ö;Ü&ð#Ø#*×#3Ñ#3Ð"4ð6ó7ð 7ð ×'Ñ'°Ð'×8Ð8Ü&ð#Ø#*×#3Ñ#3Ð"4ð6ó7ð 7ò +r   c                 óz   • [         R                  R                  [         R                  R                  U5      5      $ ©N)Úosr   ÚrealpathÚabspath)r   r   s     r   Ú_resolve_pathÚTarFile._resolve_path>   s$   € Ü—7‘7×#Ñ#¤B§G¡G§O¡O°DÓ$9Ó:Ð:r   c                 ó~   • U R                  [        R                  R                  UU5      5      R	                  U5      $ r%   )r)   r&   r   ÚjoinÚ
startswith)r   r   Úbasedirs      r   Ú_is_path_in_dirÚTarFile._is_path_in_dirA   s4   € Ø×%Ñ%¤b§g¡g§l¡l°7Ø&*ó',ó -ß-7©Z¸Ó-@ðAr   c                 ó¤   • UR                   R                  [        R                  5      (       d!  S[        R                  -   UR                   ;   a  gg)Nz..TF)r   r-   r&   Úsepr"   s     r   r   ÚTarFile._is_traversal_attemptE   s5   € Ø—‘×'Ñ'¬¯©×/Ñ/ØœŸ™‘- 7§<¡<Ó/ØØr   c                 óJ  • UR                  5       (       aŽ  [        [        R                  R	                  [        R                  R                  [        R                  " 5       UR                  5      5      5      nU R                  U[        R                  " 5       5      (       d  gg©NTF)	Úissymr   r&   r   Únormpathr,   Úgetcwdr    r/   )r   r   Úsymlink_files      r   r   ÚTarFile._is_unsafe_symlinkK   sj   € Ø�}‰}�‰Ü#Ü—G‘G×$Ñ$¤R§W¡W§\¡\´"·)²)³+Ø%,×%5Ñ%5ó&7ó 8ó 9�ð ×+Ñ+¨L¼"¿)º)»+×FÑFØØr   c                 óJ  • UR                  5       (       aŽ  [        [        R                  R	                  [        R                  R                  [        R                  " 5       UR                  5      5      5      nU R                  U[        R                  " 5       5      (       d  ggr5   )	Úislnkr   r&   r   r7   r,   r8   r    r/   )r   r   Ú	link_files      r   r!   ÚTarFile._is_unsafe_linkT   sm   € Ø�}‰}�‰Ü Ü—G‘G×$Ñ$¤R§W¡W§\¡\´"·)²)³+Ø29×2BÑ2Bó&Dó EóF�	ð ×+Ñ+¨I´r·y²y³{×CÑCØØr   © )Ú Tr%   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚstaticmethodÚtarfileÚ
tar_filterÚextraction_filterÚAttributeErrorr   r   r   r)   r/   r   r   r!   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      sw   ø† ñð
=ñ )¨×);Ñ);Ó<ÖøØó 8ð	9Ø"'÷	9ñ 	9ð	<À%÷ 	<ñ 	<ò
	7ò	;ò	Aò	ò	÷	ñ 	ðc8ús   ‹# £0AÁAr   )r&   rG   Úpathlibr   r   r   ÚUnsafeTarFileÚopenr?   r   r   Ú<module>rP      s-   ðó$ 
Û Ý ß :ôCˆmô CðL ‡|�|�r   