shell bypass 403
o
ab�
� @ s� d dl Z d dlZd dlmZ e�d�Ze�ee d�oe �� d kd�G dd� dej ��Z
e�ee d�o7e �� d kd�G d d
� d
ej ��ZedkrMe�
� dS dS )� N)�
import_helper�spwd�geteuidzroot privileges requiredc @ s e Zd Zdd� Zdd� ZdS )�TestSpwdRootc C s0 t �� }| �|t� |D ] }| �|t j� qd S )N)r �getspall�assertIsInstance�list�struct_spwd)�self�entries�entry� r
�7/usr/local/python-3.10/lib/python3.10/test/test_spwd.py�
test_getspall
s
�zTestSpwdRoot.test_getspallc C s( t �� }|s| �d� |d j}t �|�}| �|t j� | �|j|� | �|j|d � | �|j|j� | �|j t
� | �|j |d � | �|j |j� | �|jt
� | �|j|d � | �|jt
� | �|j|d � | �|jt
� | �|j|d � | �|jt
� | �|j|d � | �|jt
� | �|j|d � | �|jt
� | �|j|d � | �|jt
� | �|j|d
� | �t��
}t �d� W d � n1 s�w Y | �t
|j�d� | �tt j� | �tt jd� | �tt j|d� zt�|�}W n t�y Y d S w | �tt j|� d S )
Nzempty shadow password databaser � � � � � � � � zinvalid user namez'getspnam(): name not found')r r �skipTestZsp_namp�getspnamr r ZassertEqualZsp_namZsp_pwdp�strZsp_pwdZ sp_lstchg�intZsp_minZsp_maxZsp_warnZsp_inactZ sp_expireZsp_flag�assertRaises�KeyError� exception� TypeError�os�fsencode�UnicodeEncodeError)r
r Zrandom_namer ZcxZ
bytes_namer
r
r �
test_getspnam sN
��zTestSpwdRoot.test_getspnamN)�__name__�
__module__�__qualname__r r# r
r
r
r r s r znon-root user requiredc @ s e Zd Zdd� ZdS )�TestSpwdNonRootc
C s| d}z| � t��}t�|� W d � W d S 1 sw Y W d S ty= } z| �d||f � W Y d }~d S d }~ww )N�binzspwd entry %r doesn't exist: %s)r �PermissionErrorr r r r )r
�name�cm�excr
r
r �test_getspnam_exception@ s &� ��z'TestSpwdNonRoot.test_getspnam_exceptionN)r$ r% r&