+
    4Ssi                     `    ^ RI t ^ RIt^ RIHt ^ RIHtHt  ! R R]4      t]P                  tR# )    N)Path)ExtractErrorTarFilec                      a a ] tR t^t oRt ]! ]P                  4      tRtVtV ;t#   ]	 d5    RRR/T 3R lllt
RRR/T 3R llltR tR tR tR	 tR
 tR t RtTtT ;t# i ; i)r   zThis TarFile implementation is trying to ameliorate CVE-2007-4559,
where tarfile.TarFiles can step outside of the target directory
using '../../'.
numeric_ownerFc               L   < V P                  4        \        SV `	  WVVR 7       R# ))	set_attrsr   N)_safetarfile_checksuperextract)selfmemberpathr	   r   	__class__s   &&&&$4/usr/lib/python3/dist-packages/samba/safe_tarfile.pyr   TarFile.extract$   s'    ##%GOFI*7  9    c               J   < V P                  4        \        SV `	  WVR 7       R# ))r   N)r
   r   
extractall)r   r   membersr   r   s   &&&$r   r   TarFile.extractall*   s&    ##%Gt-:  <r   c                T   V P                  4        F  pV P                  VR 7      '       d   \        RVP                   24      hV P	                  VR 7      '       d   \        RVP
                   24      hV P                  VR 7      '       g   K}  \        RVP
                   24      h	  R# ))tarinfoz*Attempted directory traversal for member: z6Attempted directory traversal via symlink for member: z3Attempted directory traversal via link for member: N)__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    \         P                  P                  \         P                  P                  V4      4      # N)osr   realpathabspath)r   r   s   &&r   _resolve_pathTarFile._resolve_path>   s$    77##BGGOOD$9::r   c                ~    V P                  \        P                  P                  VV4      4      P	                  V4      # r#   )r'   r$   r   join
startswith)r   r   basedirs   &&&r   _is_path_in_dirTarFile._is_path_in_dirA   s4    %%bggll7&*', --7Z-@Ar   c                    VP                   P                  \        P                  4      '       g'   R \        P                  ,           VP                   9   d   R# R# )z..TF)r   r+   r$   sepr    s   &&r   r   TarFile._is_traversal_attemptE   s5    ''//-7<</r   c                R   VP                  4       '       d   \        \        P                  P	                  \        P                  P                  \        P                  ! 4       VP                  4      4      4      pV P                  V\        P                  ! 4       4      '       g   R # R# TF)	issymr   r$   r   normpathr*   getcwdr   r-   )r   r   symlink_files   && r   r   TarFile._is_unsafe_symlinkK   sj    }}#GG$$RWW\\"))+%,%5%5&7 8 9 ++L"))+FFr   c                R   VP                  4       '       d   \        \        P                  P	                  \        P                  P                  \        P                  ! 4       VP                  4      4      4      pV P                  V\        P                  ! 4       4      '       g   R # R# r3   )	islnkr   r$   r   r5   r*   r6   r   r-   )r   r   	link_files   && r   r   TarFile._is_unsafe_linkT   sm    }} GG$$RWW\\"))+292B2B&D EF	 ++Iryy{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____classdictcell____classcell__)r   __classdict__s   @@r   r   r      s|     
= )););< 8	9"'	9 	9	<% 	< 	<
	7	;	A			 	c8s   ( 1A#"A#r   )r$   rE   pathlibr   r   r   UnsafeTarFileopenr=   r   r   <module>rP      s-   $ 
   :Cm CL ||r   