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/rule/__pycache__/rlimit.cpython-310.pyc
o

%`b�'�@s�ddlZddlmZmZddlmZmZmZddlm	Z	m
Z
mZmZddl
mZe�Zgd�Zgd�Zdd	gZd
gZeeeeZe�d�Ze�d�Ze�d
�Ze�d�ZGdd�de	�ZGdd�de
�Zdd�ZdS)�N)�RE_PROFILE_RLIMIT�strip_quotes)�AppArmorBug�AppArmorException�type_is_str)�BaseRule�BaseRuleset�
parse_comment�quote_if_needed)�init_translation)�fsize�data�stack�core�rss�as�memlock�msgqueue)�ofile�nofile�locks�
sigpending�nproc�rtprio�cpu�rttime�nicez*^(?P<number>[0-9]+)\s*(?P<unit>[a-zA-Z]*)$z^[0-9]+$z^[0-9]+\s*([KMG]B?)?$z^(-20|-[01]?[0-9]|[01]?[0-9])$cs�eZdZdZGdd�de�ZeZdZ		d�fdd	�	Ze	d
d��Z
e	dd
��Zddd�Zdd�Z
dd�Zdd�Zdd�Zdd�Z�ZS)�
RlimitRulez.Class to handle and store a single rlimit rulec@seZdZdS)zRlimitRule.__RlimitAllN)�__name__�
__module__�__qualname__�r!r!�6/usr/lib/python3/dist-packages/apparmor/rule/rlimit.py�__RlimitAll,sr#�rlimitF�Nc
s�tt|�j|||||d�|s|s|rtd��t|�r)|tvr#||_ntd|��tdt|���d|_	d|_
d|_|tjkrDd|_dSt|�r�|�
�sPtd��|tvrht�|�satd||f��|�|�|_
nZ|tvrt�|�sytd	||f��t|�|_
nC|tvr�t�|�s�td	||f��t|�\}}	|d
kr�|�|d�|_
n |�|d�|_
n|tvr�t�|�s�td||f��d
t|�|_
||_	dStdt|���)N)�audit�deny�
allow_keyword�comment�	log_eventzBThe audit, allow or deny keywords are not allowed in rlimit rules.z)Unknown rlimit keyword in rlimit rule: %sz'Passed unknown object to RlimitRule: %sFT�Empty value in rlimit rulez*Invalid value or unit in rlimit %s %s rulez"Invalid value in rlimit %s %s ruler�us�secondsr)�superr�__init__rr�
rlimit_allr$r�str�value�value_as_int�
all_values�ALL�strip�rlimit_size�RE_UNIT_SIZE�match�size_to_int�
rlimit_number�	RE_NUMBER�int�rlimit_time�RE_NUMBER_UNIT�
split_unit�time_to_int�rlimit_nice�RE_NICE)
�selfr$r2r&r'r(r)r*�number�unit��	__class__r!r"r/3sR�






zRlimitRule.__init__cCs
t�|�S)N)r�search)�cls�raw_ruler!r!r"�_matchms
zRlimitRule._matchcCs�|�|�}|sttd�|��t|�}|�d�r t|�d��}nttd�|��|�d�r@|�d�dkr8tj}nt|�d��}nttd�|��t|||d�S)z$parse raw_rule and return RlimitRulezInvalid rlimit rule '%s'r$z*Invalid rlimit rule '%s' - keyword missingr2�infinityz(Invalid rlimit rule '%s' - value missing)r))rLr�_r	�grouprrr5)rJrK�matchesr)r$r2r!r!r"�_parseqs


�zRlimitRule._parsercCshd|}|jrdt|j�}ntd��|jrd}n|jr$dt|j�}ntd��d||��|||jfS)z)return rule (in clean/default formatting)z  z %szEmpty rlimit in rlimit rulez <= infinityz <= %sr+z%s%sset rlimit%s%s,%s)r$r
rr4r2�
modifiers_strr))rD�depth�spacer$r2r!r!r"�	get_clean�szRlimitRule.get_cleancCs�t|�\}}|dkr
	|S|dks|dkr|d}|S|dks#|dkr+|dd}|S|dks3|dkr=|ddd}|Std	||j|f��)
Nr%�K�KBi�M�MB�G�GB�Unknown unit %s in rlimit %s %s)r@rr$)rDr2rErFr!r!r"r:�s
����zRlimitRule.size_to_intcCs�t|�\}}|dkr|}|dvr"|d}|dkr ttd�|��|S|dvr8|d}|dkr6ttd�|��|S|dvr?	|S|d	vrI|d
}|S|dvrU|d
d
}|S|dvrc|d
d
d
}|S|dvrs|d
d
d
d}|Std||j|f��)Nr%)r,�microsecond�microsecondsg��.Ar-z"Invalid unit in rlimit cpu %s rule)�ms�millisecond�millisecondsg@�@)�s�sec�secondr-)�min�minute�minutes�<)�h�hour�hours)�d�day�days�)�week�weeks�r\)r@rrNr$)rDr2�default_unitrErFr!r!r"rA�s:���
����zRlimitRule.time_to_intcCsR|�|jd|jdd�s
dS|js|jstd��|js'|jrdS|j|jkr'dSdS)z2check if other_rule is covered by this rule objectFr$z0No target profile specified in other rlimit ruleT)�_is_covered_plainr$r2r4rr3)rD�
other_ruler!r!r"�is_covered_localvars�szRlimitRule.is_covered_localvarscCsLt|�tkstdt|���|j|jkrdS|j|jks"|j|jkr$dSdS)z,compare if rule-specific variables are equalzPassed non-rlimit rule: %sFT)�typerrr1r$r3r4)rD�rule_obj�strictr!r!r"�is_equal_localvars�szRlimitRule.is_equal_localvarscCs,|j}|jr	d}n|j}td�|td�|gS)NrM�Rlimit�Value)r$r4r2rN)rD�
rlimit_txt�
values_txtr!r!r"�logprof_header_localvars�s�z#RlimitRule.logprof_header_localvars)FFFr%N)r)rrr �__doc__�object�_RlimitRule__RlimitAllr5�	rule_namer/�classmethodrLrQrUr:rArvrzr�
__classcell__r!r!rGr"r's$�:


rc@seZdZdZdd�ZdS)�
RlimitRulesetz6Class to handle and store a collection of rlimit rulescCstd��)z`Return the next possible glob. For rlimit rules, that can mean changing the value to 'infinity' z4get_glob() is not (yet) available for this rule type)r)rD�path_or_ruler!r!r"�get_glob�szRlimitRuleset.get_globN)rrr r�r�r!r!r!r"r��sr�cCs>t�|�}|s
td|��t|�d��}|�d�pd}||fS)Nz%Invalid value given to split_unit: %srErFr%)r?r9rr=rO)r2rPrErFr!r!r"r@s
r@)�re�apparmor.regexrr�apparmor.commonrrr�
apparmor.rulerrr	r
�apparmor.translationsrrNr7r;r>rBr0�compiler?r<r8rCrr�r@r!r!r!r"�<module>s&



S