File: //lib/python3/dist-packages/apparmor/rule/__pycache__/variable.cpython-310.pyc
o
%`b� � @ s� d dl mZmZ d dlmZmZmZ d dlmZm Z m
Z
mZ d dlZd dl
mZ e� ZG dd� de�ZG dd � d e �Zd
d� ZdS )� )�RE_PROFILE_VARIABLE�strip_quotes)�AppArmorBug�AppArmorException�type_is_str)�BaseRule�BaseRuleset�
parse_comment�quote_if_neededN)�init_translationc sd e Zd ZdZdZ d� fdd� Zedd � �Zed
d� �Zdd
d�Z dd� Z
dd� Zdd� Z� Z
S )�VariableRulez0Class to handle and store a single variable rule�variableF� Nc s t t| �j|||||d� |rtd| jj ��|r!td| jj ��t|�s/td| jj|f ��|�d�s>td| jj|f ��|� d�sMtd| jj|f ��t|�s[td | jj|f ��|d
vritd| jj|f ��t
|�turytd| jj|f ��|s�td
| jj|f ��|| _|| _
|| _d S )N)�audit�deny�
allow_keyword�comment� log_eventz(Attempt to initialize %s with audit flagz'Attempt to initialize %s with deny flagz)Passed unknown type for varname to %s: %sz@{z:Passed invalid varname to %s (doesn't start with '@{'): %s�}z7Passed invalid varname to %s (doesn't end with '}'): %sz:Passed unknown type for variable assignment mode to %s: %s��=z+=z1Passed unknown variable assignment mode to %s: %sz(Passed unknown type for values to %s: %sz%Passed empty list of values to %s: %s)�superr �__init__r � __class__�__name__r �
startswithr �endswith�type�set�varname�mode�values) �selfr r r! r r r r r �r � �8/usr/lib/python3/dist-packages/apparmor/rule/variable.pyr s4 �
zVariableRule.__init__c C s
t �|�S )N)r �search)�cls�raw_ruler$ r$ r% �_matchC s
zVariableRule._matchc C s^ | � |�}|sttd�| ��t|�}|�d�}|�d�}t|�d��}t|||ddd|d�S )z&parse raw_rule and return VariableRulezInvalid variable rule '%s'r r r! F)r r r r )r) r �_r �group�
separate_varsr )r'