HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/apparmor/__pycache__/severity.cpython-310.pyc
o

%`b3$�@s@ddlmZddlZddlmZmZmZmZGdd�de�Z	dS)�)�with_statementN)�AppArmorException�open_file_read�warn�convert_regexpc@sPeZdZddd�Zdd�Zddd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dS)�SeverityN�
c
Cs�d|_d|_t�|_||jd<i|jd<i|jd<i|jd<||jd<t�|jd<|s/td	��t|���}t|d
d�D]�\}}|��}|dksL|�d
�rMq;|�d�r�z|�	�\}}}}	t
|�t
|�t
|	�}}}	Wntyztd|||f��w|tdd�vs�|tdd�vs�|	tdd�vr�td|||f��|�
d�}d|vr�|||	d�|jd|<q;|jd}
|�	d�}t|�D]-\}}
d|
vr�d�||d��}t|�}d|||	d�i|
|<n
|
�|
i�|
|
<|
|
}
q�q;|�d��r*z|�	�\}}t
|�}Wnt�yd|||f}t|��w|tdd�v�r"td|||f��||jd|<q;td|||f��Wd�dS1�s?wYdS)zInitialises the class objectz/etc/apparmor.dz_-*not*implemented*-_�DATABASENAME�CAPABILITIES�FILES�REGEXPS�DEFAULT_RANK�	VARIABLESzNo severity db file given�)�start��#�/z>Insufficient values for permissions in file: %s
	[Line %s]: %sr�z?Inappropriate values for permissions in file: %s
	[Line %s]: %s�*)�r�w�xN�AA_RANK�CAP_z4No severity value present in file: %s
	[Line %s]: %sz?Inappropriate severity value present in file: %s
	[Line %s]: %sz*Unexpected line in file: %s
	[Line %s]: %s)�PROF_DIR�NOT_IMPLEMENTED�dict�severityrr�	enumerate�strip�
startswith�split�int�
ValueError�range�lstrip�joinr�get)�self�dbname�default_rank�database�lineno�line�path�read�write�execute�ptr�pieces�index�piece�regexp�resourcer�
error_message�r:�3/usr/lib/python3/dist-packages/apparmor/severity.py�__init__sj





 �*



���$�zSeverity.__init__cCs\d|��}|dkrt|jd���S||jd��vr#|jd|Std|�|jdS)zNReturns the severity of for the capability resource, default value if no matchzCAP_%s�__ALL__r
zunknown capability: %sr
)�upper�maxr�values�keysr)r)r8�capr:r:r;�rank_capabilityNs
zSeverity.rank_capabilitycCs8d|vr
|�||�S|ddkr|�||�Std|��)z#Returns the rank for the given path�@rrzUnexpected path input: %s)�handle_variable_rank�handle_filer)r)r/�moder:r:r;�	rank_pathYs
zSeverity.rank_pathc
Cs�t|�dkr	d}n|d}|dd�}d�|g|�}|�|d�r+|�|||||�}|duri|��D]5}d|vrht�d||�rhd	||��vrh|D]}	|dus]||d	�|	d
�|krg||d	�|	d�}qKq3|S)z,Returns the max severity from the regex treerrrNrFr�^r���)�lenr'r(�
check_subtreerA�re�search)
r)�treerG�sev�segments�first�restr/�chunk�mr:r:r;rLbs" �zSeverity.check_subtreecCs�|dd�}|�d�}d}||jd��vr8|D]}|dus+|jd|�|d�|kr6|jd|�|d�}qn|�|jd|||�}|durL|jdS|S)zBReturns the severity for the file, default value if no match foundrNrrrJrr
)r"rrAr(rL)r)r8rGr4rPrUr:r:r;rF{s
"��
zSeverity.handle_filec
Cs�t�d�}|�|�}|rI|jd}d|��d}|jd|D]&}|�|||�}|�||�}	||jdkr9|	}q |	|jdkrF|	|krF|	}q |S|�||�S)zEReturns the max possible rank for file resources containing variablesz@{([^{.]*)}r
z@{%s}rr)rM�compilerNr�groups�variable_replacerErF)
r)r8rG�regex_variable�matches�rank�variable�replacement�resource_replaced�rank_newr:r:r;rE�s


�zSeverity.handle_variable_rankcCs�d}d}|�d|�dkr|�d|�dkrd}|�|d�dkr,|�|d�dkr,d}|ddkrB|dd�dkrB|rB|d	d�}|ddkrX|d
d�dkrX|rX|dd�}|�||�S)z1Returns the expanded path for the passed variableFrrJz//TrN�r���)�find�replace)r)r\r]r8�leading�trailingr:r:r;rX�s$$  zSeverity.variable_replacecCs||jd<dS)z: Set the profile variables to use for rating the severity rN)r)r)�varsr:r:r;�
set_variables�szSeverity.set_variables)Nr)N)�__name__�
__module__�__qualname__r<rCrHrLrFrErXrgr:r:r:r;rs
;
	r)
�
__future__rrM�apparmor.commonrrrr�objectrr:r:r:r;�<module>s