HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //usr/lib/python3/dist-packages/samba/tests/__pycache__/segfault.cpython-310.pyc
o

�Kya�@s�dZddlZddlZddlZddlmZmZddlm	Z	ddlm
Z
mZddlm
Z
mZmZmZmZddlmZmZddlmZdd	lmZdd
lmZddlmZddlmZddlZd
d�Zdd�ZGdd�dejj�ZdS)zHTest whether various python calls segfault when given unexpected input.
�N)�Net�LIBNET_JOIN_AUTOMATIC)�DONT_USE_KERBEROS)�
NTSTATUSError�ntstatus)�misc�drsuapi�samr�unixinfo�	dnsserver)�auth�gensec)�SamDB)�netbios)�registry)�ldb)�	messagingcs�fdd�}|S)Nc
s�t��}|dkr7z	�|i|��Wnty'}z
t��WYd}~nd}~wwtj��tj��t�	d�t�
|d�\}}t�|�rOt�|�}t
d|��dS)NrzFailed with signal %d)�os�fork�	Exception�	traceback�	print_exc�sys�stderr�flush�stdout�_exit�waitpid�WIFSIGNALED�WTERMSIG�AssertionError)�args�kwargs�pid�e�pid2�status�signal��f��6/usr/lib/python3/dist-packages/samba/tests/segfault.py�wrapper(s ��




�z"segfault_detector.<locals>.wrapperr*)r)r,r*r(r+�segfault_detector'sr-csddlm���fdd�}|S)Nr)�environcs d�d<�|i|���d=dS)N�1�PLEASE_NO_GDB_BACKTRACEr*)r!r"�r.r)r*r+�w=s
zno_gdb_backtrace.<locals>.w)rr.)r)r2r*r1r+�no_gdb_backtrace;sr3c@sHeZdZdd�Zdd�Zedd��Zeedd���Zed	d
��Z	edd��Z
ed
d��Zedd��Zedd��Z
edd��Zedd��Zedd��Zedd��Zedd��Zedd��Zedd ��Zed!d"��Zed#d$��Zed%d&��Zed'd(��Zeed)d*���Zeed+d,���Zeed-d.���Zeed/d0���Zeed1d2���Zd3S)4�
SegfaultTestscCs.tjd}|��}|j|��td�}|||fS)N�SERVER)�template�kerberos_state)rr.�get_loadparm�insta_creds�get_credentialsr)�self�server�lp�credsr*r*r+�get_lp_et_alFs

�
zSegfaultTests.get_lp_et_alcCs(|��\}}}d|}t|||d�}|S)Nzldap://)�credentialsr=)r?r)r;r=r>r<�urlrr*r*r+�	get_samdbNszSegfaultTests.get_samdbcCs4|��\}}}t|||d�}|�d|dt���dS�N�r<�*)r?r�replicate_initr�GUID)r;r=r>r<�netr*r*r+�test_net_replicate_init__1Tsz(SegfaultTests.test_net_replicate_init__1cCs<|��}|��\}}}t|||d�}|�||dt���dSrC)rBr?rrFrrG)r;�samdbr=r>r<rHr*r*r+�test_net_replicate_init__3Zsz(SegfaultTests.test_net_replicate_init__3cCs6|��\}}}t��}t|||d�}|�dd|�dS)NrDrE�)r?r�DsGetNCChangesCtr6r�replicate_chunk)r;r=r>r<�ctrrHr*r*r+�test_net_replicate_chunk_1csz(SegfaultTests.test_net_replicate_chunk_1cCs"tjddgd�}tjj|d�}dS)NrE�sam)r�methods��auth_context)r�AuthContextr
�Security�start_server)r;�a�gr*r*r+�%test_auth_context_gensec_start_serverjsz3SegfaultTests.test_auth_context_gensec_start_servercCstjddd�}dS)NrE�foo)r�	principal)r�user_session)r;�sr*r*r+�test_auth_user_sessionr�z$SegfaultTests.test_auth_user_sessioncCstjjdd�dS)NrErS)r
rVrW�r;r*r*r+�test_gensec_start_servervr`z&SegfaultTests.test_gensec_start_servercCst��}|�dd�}dS)N)rEr[�	localhost)r�Node�
query_name)r;�n�tr*r*r+�test_netbios_query_namezsz%SegfaultTests.test_netbios_query_namecCs|��\}}}|�d�dS)NrE)r?�encrypt_netr_crypt_password)r;r=r>r<r*r*r+� test_encrypt_netr_crypt_passwordsz.SegfaultTests.test_encrypt_netr_crypt_passwordc
CsJz
tjddd�WdStjy$}z
td|�WYd}~dSd}~ww)N�rE)r@�failed with %s)r�open_ldbr�LdbError�print�r;r$r*r*r+�test_hive_open_ldb�s��z SegfaultTests.test_hive_open_ldbc
CsLzt�dddd�WdStjy%}z
td|�WYd}~dSd}~ww)Nr^rl)r�	open_hiverrnrorpr*r*r+�test_hive_open_hive�s��z!SegfaultTests.test_hive_open_hivecCsBt��}t�d�}z|�|�Wn
tjyYnwt|�dS)N�q)r�Message�MessageElement�addrn�str)r;�mr$r*r*r+�test_ldb_add_nameless_element�s
�z+SegfaultTests.test_ldb_add_nameless_elementcCst�d�dS�Nrk)r�register_modulerar*r*r+�test_ldb_register_module�sz&SegfaultTests.test_ldb_register_modulecCst�dddd�dS)Nr^F)r�
deregisterrar*r*r+�test_messaging_deregister�sz'SegfaultTests.test_messaging_deregistercCsddlm}|�d�dS)Nr)�echork)�samba.dcerpcr��rpcecho)r;r�r*r*r+�test_rpcecho�szSegfaultTests.test_rpcechocCsdt��_dS)z�There are many pidl generated functions that crashed on this
        pattern, where a NULL pointer was created rather than an empty
        structure.rLN)r	�Connect5�out_info_outrar*r*r+�test_dcerpc_idl_ref_elements�sz*SegfaultTests.test_dcerpc_idl_ref_elementscC�t��jdS)z$Dereferencing is sufficient to crashN)r
�GetPWUid�	out_infosrar*r*r+�!test_dcerpc_idl_unixinfo_elements��z/SegfaultTests.test_dcerpc_idl_unixinfo_elementscCr�)z'Inline arrays were incorrectly handled.N)r�DNS_RPC_SERVER_INFO_DOTNET�pExtensionsrar*r*r+�test_dcerpc_idl_inline_arrays�r�z+SegfaultTests.test_dcerpc_idl_inline_arrayscCs t��}t��}|||g|_dS)z0Setting an inline array was incorrectly handled.N)r�
DNS_EXTENSION�DNS_RPC_DP_INFO�pwszReserved)r;rX�xr*r*r+�!test_dcerpc_idl_set_inline_arrays�sz/SegfaultTests.test_dcerpc_idl_set_inline_arrayscCs$ddlm}|��}d|_|jdS)Nr)�dnsp�)r�r��string_list�countrx)r;r�r^r*r*r+�test_dnsp_string_list�s
z#SegfaultTests.test_dnsp_string_listcCs:ddlm}ddlm}m}|gd��}|j|_|jdS)Nr)�	TXTRecord)r�r)rX�b�c)�samba.dnsserverr�r�r�r�
DNS_TYPE_A�wType�data)r;r�r�r�recr*r*r+�test_dns_record�s

zSegfaultTests.test_dns_recordcCs6|��}t��}t�|d�|_|�||�}~|jdSr{)rBrru�Dn�dn�msg_diff)r;rJ�msg�diffr*r*r+�test_ldb_msg_diff�s
zSegfaultTests.test_ldb_msg_diffcCst��}|`dS)N)rrur�)r;r�r*r*r+�test_ldb_msg_del_dn�sz!SegfaultTests.test_ldb_msg_del_dncCs|��}t�|d�}|`dS)Nzrelax:1)rBr�Control�critical)r;rJr�r*r*r+�test_ldb_control_del_critical�sz+SegfaultTests.test_ldb_control_del_criticalN)�__name__�
__module__�__qualname__r?rBr-rIr3rKrPrZr_rbrhrjrqrsrzr}rr�r�r�r�r�r�r�r�r�r�r*r*r*r+r4Esn









	







r4) �__doc__�samba.tests�sambarr�	samba.netrr�samba.credentialsrrrr�rrr	r
rrr
�samba.samdbrrrrrrr-r3�tests�TestCaser4r*r*r*r+�<module>s$