
    daf5                     ~   d Z ddlZddlZddlZ G d d      Zd Zd Zd Zd Zej                  d	        Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#e$d#k(  r7dd$l%m&Z&  e&        ejN                  d%   Z(  e)       e(   ejN                  d&d   yy)'zThis script contains the actual auditing tests.

It should not be imported directly, but should be run by the test_audit
module with arguments identifying each test.

    Nc                   D    e Zd ZdZdefdZd Zd Zd Ze	d        Z
d Zy)	TestHookzUsed in standard hook tests to collect any logged events.

    Should be used in a with block to ensure that it has no impact
    after the test completes.
    Nc                 D    |xs d| _         || _        g | _        d| _        y )N F)raise_on_eventsexc_typeseenclosed)selfr   r   s      +/root/Python-3.12.4/Lib/test/audit-tests.py__init__zTestHook.__init__   s$    .4" 	    c                 0    t        j                  |        | S N)sysaddaudithookr   as     r   	__enter__zTestHook.__enter__   s    r   c                 $    | j                          y r   )closer   s     r   __exit__zTestHook.__exit__   s    

r   c                     d| _         y )NT)r
   r   s    r   r   zTestHook.close!   s	    r   c                 F    | j                   D cg c]  }|d   	 c}S c c}w )Nr   )r	   )r   is     r   seen_eventszTestHook.seen_events$   s    "ii(!(((s   c                     | j                   ry | j                  j                  ||f       || j                  v r| j	                  d|z         y )Nz
saw event )r
   r	   appendr   r   )r   eventargss      r   __call__zTestHook.__call__(   sI    ;;		%'D(((--u 455 )r   )__name__
__module____qualname____doc__RuntimeErrorr   r   r   r   propertyr   r"   r   r   r   r   r      s;     (,l  ) )6r   r   c                 .    | |k7  rt        | d|      y )N should equal AssertionErrorxys     r   assertEqualr0   1   s$    AvuN1%899 r   c                 ,    | |vrt        | d|      y )Nz should be in r+   elseriess     r   assertInr5   6   s%    	v^F:>?? r   c                 ,    | |v rt        | d|      y )Nz should not be in r+   r2   s     r   assertNotInr7   ;   s%    	V|v%7zBCC r   c                     t        |       t        |      k7  rt        | d|      t        d t        | |      D              rt        | d|      y )Nr*   c              3   ,   K   | ]  \  }}||k7    y wr   r   ).0ixiys      r   	<genexpr>z&assertSequenceEqual.<locals>.<genexpr>C   s     
,B28
,s   )lenr,   anyzipr-   s     r   assertSequenceEqualrA   @   sW    
1vQuN1%899

,#a)
,,uN1%899 -r   c              #      K   	 d  J d|         # t         $ r4}t        |t              r t        |      | u sJ | d|         Y d }~y d }~ww xY ww)Nz	expected z should be )BaseException
isinstancer,   type)ex_typeexs     r   assertRaisesrH   G   s`     @+	'++u @b.)Bx7"?rd+gY$??"@s%   A 	A*A
A
AAc                      t               5 } t        j                  dddd       t        | j                  d   d   d       t        | j                  d   d   d       d d d        y # 1 sw Y   y xY w)N
test_event         r   )rK   rL   rM   )r   r   auditr0   r	   )hooks    r   
test_basicrP   R   s\    	 0t		,1a(DIIaLO\2DIIaLOY/0 0 0s   AA%%A.c                     t        d      5 } t               5 }t        j                  d       t        d| j                         t        d|j                         d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nsys.addaudithookr   rJ   )r   r   rN   r5   r   r7   hook1hook2s     r   test_block_add_hookrW   Y   sq     
"4	5 9Z 	95IIl#\5#4#45e&7&78	99 9	9 	99 9s#   A7AA+A7+A4	0A77B c                      t        t              5  t        dt              5 } t               5 }	 d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)NrR   )r   r   )rH   rC   r   rT   s     r   !test_block_add_hook_baseexceptionrY   c   sh    	m	$ .
 	 u		 
 		 	 s7   A AAAA AAA	A  A)c            	         dd l } d}| j                  |      }t               5 }t        || j	                  | j                  |                   	 t        dd      5 }| j                  ||       d d d        t        dd      5 }t        || j                  |             d d d        t        j                  d       	 d d d        j                  D cg c]  \  }}|dk(  s|d   |d   f }}}t        ||| j                  fgdz         |j                  D cg c]  \  }}|d	k(  s|d    }}}t        ||g       |j                  D cg c]  \  }}|d
k(  s| }}}t        |d
g       y # 1 sw Y   xY w# 1 sw Y   xY w# t        j                  d       w xY w# 1 sw Y   xY wc c}}w c c}}w c c}}w )Nr   r   bcrK   rL   rM   ztest-marshal.binwbrbzmarshal.dumpsrK   rL   zmarshal.loadszmarshal.load)marshaldumpsr   r0   loadsopendumploadosunlinkr	   rA   version)r`   opayloadrO   fer   actuals           r   test_marshalrn   n   s    AmmAG	 	*tAw}}W]]1%567	*($/ #1Q"#($/ 01Aw||A/0 II()	* (,yyItq!A4HqtQqTlIFI!W__!5 6 :;#yyAtq!A,@adAFA	* II=DAqn)<a=F= 01# #0 0 II()	* 	* J B >sw   +F$F
E1-F
E>F
%F$F0 F0F6(F6F<F<1E;	6F
>F	F

F!!F$$F-c                  r   dd l }  G d d      }| j                   |             }| j                  d      }t        d| j                  |             t	        d      5 }t        t              5  | j                  |       d d d        | j                  |       d d d        y # 1 sw Y   #xY w# 1 sw Y   y xY w)Nr   c                       e Zd Zd Zy) test_pickle.<locals>.PicklePrintc                     t         dfS )N)Pwned!)str)r   ps     r   __reduce_ex__z.test_pickle.<locals>.PicklePrint.__reduce_ex__   s    ##r   N)r#   r$   r%   rv   r   r   r   PicklePrintrq      s    	$r   rw   r[   rs   zpickle.find_classrS   )picklera   r0   rb   r   rH   r'   )rx   rw   	payload_1	payload_2rO   s        r   test_pickler{      s    $ $ []+I56I &,,y12	"5	6  $,' 	$LL#	$ 	Y   	$ 	$   s$   B--B!?B-!B*	&B--B6c                      G d d      }  G d d      } G d d|       } |        }t               5 }d|_        |f|_        t        j                  d   j                  ||f       |j                  |_        d	|_        ||_        d d d        j                  D cg c]  \  }}|d
k(  s|d   |d   f }}}t        |df|df|dfdfg|       y # 1 sw Y   NxY wc c}}w )Nc                       e Zd Zy)test_monkeypatch.<locals>.ANr#   r$   r%   r   r   r   Ar~          r   r   c                       e Zd Zy)test_monkeypatch.<locals>.BNr   r   r   r   Br      r   r   r   c                       e Zd Zy)test_monkeypatch.<locals>.CNr   r   r   r   Cr      r   r   r   X	__bases__{   zobject.__setattr__r   rK   r#   	__class__)r   r#   r   rE   __dict____set__r   new_attrr   r	   rA   )r   r   r   r   rO   rl   rm   s          r   test_monkeypatchr      s      A  	
A	 t
dk"**1qd3ZZ

 (,yyNtq!A9M4MqtQqTlNFN
Z1k*Q,<q+>NOQW  Os   ACC)CCc                    	 dd l }|j                         j                  }t	        dh      5 }t
        | dft
        t        j                  dft
        ddft
        | dd	d d d d
d f	|| ffD ]$  ^}}|st        t              5   ||  d d d        & 	 d d d        j                  D cg c]  \  }}|dk(  s|d   s|d   |d   f }}}|j                  D cg c]  \  }}|dk(  s|d   r|d   |d   f }	}}t        | dft        j                  dfd| df|r| dfnd fD 
cg c]  }
|
|
 c}
|       t        g |	       y # t        $ r d }Y 2w xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}}w c c}}w c c}
w )Nr   rc   rS   rr_   rM   r^   wFc                       y)NrK   r   r   s    r   <lambda>ztest_open.<locals>.<lambda>       r   rK   rL   )rM   r   )sslcreate_default_contextload_dh_paramsImportErrorr   rc   r   
executablerH   r'   r	   rA   )testfnr   r   rO   fnr!   rl   r   actual_modeactual_flagr   s              r   	test_openr      s   335DD 
6(	+ t633>>4(1dO63D$e\JV$
 
	IB l+ D	 
	 -1IINDAqf1AaD!A$<NKN,0IIRDAqfQqTAaD!A$<RKR %"0d
	
 } 
	
 	 K(E     OR
	
s_   E AE"?E
E"'E.5E.;E.E4'E4-E4$E:EEEE""E+c                     g fd} t        j                  |       }	 t               5 }t        d       d|_        t        d       d|_        t        d       d|_        t        d       d	|_        d d d        t        j                  |       t        d
gdz         y # 1 sw Y   /xY w# t        j                  |       w xY w)Nc                 x    | j                   t        j                  j                  k(  rj	                  |       y y r   )f_coder   r"   __code__r   )framer    r!   traceds      r   traceztest_cantrace.<locals>.trace   s,    <<8,,555MM%  6r   1F2T3rK   4r   call   )r   settracer   eval__cantrace__rA   )r   oldrO   r   s      @r   test_cantracer      s    F! ,,u
CZ 	"4I !&DI !%DI !"DI !"D#	"& 	S1f-+	" 	"& 	Ss#   
B, A	B 2B,  B)%B, ,Cc                      dd l } t               5 }| j                  dd       t        |j                  d   d   d d d       d d d        y # 1 sw Y   y xY w)Nr   r      rK   rL   )r   r   )mmapr   r0   r	   )r   rO   s     r   	test_mmapr   	  sL    	 2t		"aDIIaLOBQ'12 2 2s   2A

Ac                  j    d fd} t        j                  |        t         _        t        d      )Nc                 D    | t         urt        j                  | ||       y y r   )r'   r   __excepthook__)r   	exc_valueexc_tbs      r   
excepthookz#test_excepthook.<locals>.excepthook  s!    <'xF; (r   c                     | dk(  r_t        |d   |d         st        d|d   d|d   d      |d   k7  rt        d|d    d	       t        | t	        |d                y y )
Nzsys.excepthookrL   rK   zExpected isinstance(z, )r   	Expected  == )rD   	TypeError
ValueErrorprintrepr)r    r!   r   s     r   rO   ztest_excepthook.<locals>.hook  s    $$d1gtAw/"6tAwkQ{RS TUUAw*$ 9T!WIT*!FGG%d1g' %r   zfatal-error)r   r   r   r'   )rO   r   s    @r   test_excepthookr     s/    <( TCN
}
%%r   c                      ddl m}  d fd}t        j                  |       t        _         | t        d      dd        y )Nr   )write_unraisable_excc                      y r   r   )hookargss    r   unraisablehookz+test_unraisablehook.<locals>.unraisablehook&  s    r   c                     | dk(  rM|d   k7  rt        d|d    d       t        | t        |d   j                        |d   j                         y y )Nzsys.unraisablehookr   r   r   rK   )r   r   r   r   err_msg)r    r!   r   s     r   rO   z!test_unraisablehook.<locals>.hook)  s]    ((Aw.( 9T!WIT.9I!JKK%d1g//0$q'//B )r   znonfatal-errorzfor audit hook test)	_testcapir   r   r   r   r'   )r   rO   r   s     @r   test_unraisablehookr   #  s=    .C T'C&679NPTUr   c                      ddl m} m}m}m} d }t        j                  |        | |d      } ||d       	  ||d       t        d      # t        $ r Y nw xY w|j                         } ||       y )Nr   )OpenKeyEnumKeyCloseKeyHKEY_LOCAL_MACHINEc                 @    | j                  d      sy t        | g|  y )Nzwinreg.
startswithr   r    r!   s     r   rO   ztest_winreg.<locals>.hook7  s     	*edr   Softwarei'  z%Expected EnumKey(HKLM, 10000) to fail)
winregr   r   r   r   r   r   r'   OSErrorDetach)r   r   r   r   rO   kkvs          r   test_winregr   4  sy    EE
 T"J/AAqMD5 BCC  
 
BRLs   	A 	AAc                  4   dd l } d }t        j                  |       | j                          | j                  | j                  | j
                        }	 |j                  d       |j                          y # t        $ r Y w xY w# |j                          w xY w)Nr   c                 @    | j                  d      rt        | g|  y y )Nzsocket.r   r   s     r   rO   ztest_socket.<locals>.hookN  "    I&%$ 'r   )z	127.0.0.1i  )	socketr   r   gethostnameAF_INETSOCK_STREAMbind	Exceptionr   )r   rO   socks      r   test_socketr   K  s      T
 ==););<D		%& 	

   	

s$   A6 6	B?B BB Bc                      dd l } d }t        j                  |       | j                  d       t	               }|g}| j                  |       | j                  |       y )Nr   c                 @    | j                  d      rt        | g|  y y )Nzgc.r   r   s     r   rO   ztest_gc.<locals>.hookd  s"    E"%$ #r   rK   )
generation)gcr   r   get_objectsobjectget_referrersget_referents)r   rO   r.   r/   s       r   test_gcr   a  sR      TNNaN A	
AQQr   c                     dd l } d }t        j                  |       | j                  j	                  d      }	 |j                  dd       |j                          y # t        $ r t        dd       Y (w xY w# |j                          w xY w)Nr   c                 F    | j                  d      rt        | g|dd    y y )Nzhttp.client.rK   r   r   s     r   rO   ztest_http_client.<locals>.hookv  s(    N+%#$qr(# ,r   zwww.python.orgGET/zhttp.client.sendz[cannot send])	http.clientr   r   clientHTTPConnectionrequestr   r   r   )httprO   conns      r   test_http_clientr   s  su    $ T;;%%&67DUC  	

  3 /23 	

s#   A A41A7 3A44A7 7B	c                  2   dd l } d }t        j                  |       | j                  d      }| j	                  d      }t        | j                  d      r.|j                  d       	 |j                  d       t        d      y # | j                  $ r Y y w xY w)Nr   c                 @    | j                  d      rt        | g|  y y )Nzsqlite3.r   r   s     r   rO   ztest_sqlite3.<locals>.hook  s"    J'%$ (r   z:memory:enable_load_extensionFtestz'Expected sqlite3.load_extension to fail)
sqlite3r   r   connect
Connectionhasattrr  load_extensionr'   OperationalError)r  rO   cx1cx2s       r   test_sqlite3r    s      T
//*
%C


Z
(C w!!#:;!!%(	Jv& HII < '' 		s   'B BBc                  X    dd l } d } | j                  |        | j                          y )Nr   c                 n    | j                  d      r$t        | |d   j                  j                         y y )Nsys.r   )r   r   r   co_namer   s     r   rO   ztest_sys_getframe.<locals>.hook  s-    F#%a//0 $r   )r   r   	_getframer   rO   s     r   test_sys_getframer    s'    1 CTCMMOr   c                  X    dd l } d } | j                  |        | j                          y )Nr   c                 @    | j                  d      rt        | g|  y y )Nr  r   r   s     r   rO   z)test_sys_getframemodulename.<locals>.hook  s"    F#%$ $r   )r   r   _getframemodulenamer  s     r   test_sys_getframemodulenamer    s*      CTCr   c                      dd l } d }t        j                  |       | j                         j	                           G fdd      }| j                   |       d      }j	                          y )Nr   c                 @    | j                  d      rt        | |       y y )N)z_thread.zcpython.PyThreadStateztest.r   r   s     r   rO   ztest_threading.<locals>.hook  s!    JK% Lr   c                       e Zd Zd Z fdZy)!test_threading.<locals>.test_funcc                      y)Nz<test_func>r   r   s    r   __repr__z*test_threading.<locals>.test_func.__repr__  s    =r   c                 P    t        j                  d       j                          y )Nztest.test_func)r   rN   release)r   locks    r   r"   z*test_threading.<locals>.test_func.__call__  s    II&'LLNr   N)r#   r$   r%   r  r"   )r  s   r   	test_funcr    s    0	r   r   r   )_threadr   r   allocate_lockacquirestart_new_thread)r!  rO   r   r   r  s       @r   test_threadingr%    s[     T  "DLLN  	  b1ALLNr   c                      dd l }  G d dt              fd}t        j                  |       	 | j	                  d d       y # $ r Y y w xY w)Nr   c                       e Zd Zy)1test_threading_abort.<locals>.ThreadNewAbortErrorNr   r   r   r   ThreadNewAbortErrorr(    r   r   r)  c                     | dk(  r        y )Nzcpython.PyThreadState_Newr   )r    r!   r)  s     r   rO   z"test_threading_abort.<locals>.hook  s    //%'' 0r   c                       y r   r   r   r   r   r   z&test_threading_abort.<locals>.<lambda>  r   r   r   )r!  r   r   r   r$  )r!  rO   r)  s     @r   test_threading_abortr,    sN    i ( T  r2 s   A AAc                  ^    dd l } d }t        j                  |       | j                  d       y )Nr   c                 F    | j                  d      rt        | |d          y y )Nz_wmi.r   r   r   s     r   rO   z!test_wmi_exec_query.<locals>.hook  s#    G$%a! %r   z#SELECT * FROM Win32_OperatingSystem)_wmir   r   
exec_query)r/  rO   s     r   test_wmi_exec_queryr1    s'    " TOO9:r   c                     dd l } d }t        j                  |       | j                  d       | j                  d       | j	                  | j
                         | j                          | j                  d       | j                  | j                  | j                         d t        _	        | j                          | j                          y )Nr   c                 @    | j                  d      rt        | g|  y y )Nzsyslog.r   r   s     r   rO   ztest_syslog.<locals>.hook  r   r   pythonr  test2)	logoptionfacility)
syslogr   r   openlog
setlogmask	LOG_DEBUGcloselog
LOG_NDELAY
LOG_LOCAL0argv)r8  rO   s     r   test_syslogr@    s      T
NN8
MM&
f&&'
OO
MM'
NNV..9J9JNKCH
NN
OOr   c                      dd l } d }t        j                  |       | j                         D ]  }t	        |t
              s||vrJ  y )Nr   c                       y r   r   r   s    r   r   z test_not_in_gc.<locals>.<lambda>  r   r   )r   r   r   r   rD   list)r   rO   ri   s      r   test_not_in_gcrD    sD    DT^^ !aq= =!r   c                  p    dd l } d } | j                  |       | j                  j                  ddd        y )Nr   c                 @    | j                  d      rt        | |       y y )Nzsys.monitoringr   r   s     r   rO   z3test_sys_monitoring_register_callback.<locals>.hook  s     ,-% .r   rK   )r   r   
monitoringregister_callbackr  s     r   %test_sys_monitoring_register_callbackrI    s2     CTNN$$Q40r   c           
          dd l }d }t        j                  |       |j                  | |j                  dddddd       y )Nr   c                 (    | dk(  rt        | |       y y )Nz_winapi.CreateNamedPipe)r   r   s     r   rO   z)test_winapi_createnamedpipe.<locals>.hook  s    --% .r   r   rL   )_winapir   r   CreateNamedPipePIPE_ACCESS_DUPLEX)	pipe_namerL  rO   s      r   test_winapi_createnamedpiperP    s=     TIw'A'A1aAqRSTr   __main__)suppress_msvcrt_assertsrK   rL   )*r&   
contextlibrf   r   r   r0   r5   r7   rA   contextmanagerrH   rP   rW   rY   rn   r{   r   r   r   r   r   r   r   r   r   r   r  r  r  r%  r,  r1  r@  rD  rI  rP  r#   test.supportrR  r?  r  globalsr   r   r   <module>rW     s    	 
 6  6H:
@
D
: @ @0924 *@()V.B2&$V".,$$J,,(;*!1U z488A;DGIdOSXXab\" r   