00000013 $ˆl–äY>”*C]Ši@¹p,ÜŠbѿ „ž?ÁÀÆ2a qéqeÉ@ã @sþddlZddlZddlmZddlmZddlmZmZm Z m Z m Z m Z ddl Z ddlmZddlmZddlmZmZmZd ZdZd ZGd d „d e ƒZeed œdd„Zeedœdd„Zeeeeeee eeeffffZGdd„dƒZ Gdd„dƒZ!dS)éN)Ú OrderedDict)Úsuppress)ÚcastÚDictÚIterableÚ NamedTupleÚOptionalÚUnioné)Ú exception)ÚPermissionMapDescriptor)ÚAVRuleÚ SELinuxPolicyÚ TERuletype)ÚrÚwÚbÚnÚué c@s"eZdZUdZeed<eed<dS)Ú RuleWeightzDThe read and write weights for a rule, given all of its permissions.ÚreadÚwriteN)Ú__name__Ú __module__Ú __qualname__Ú__doc__ÚintÚ__annotations__©rrú5/usr/lib64/python3.9/site-packages/setools/permmap.pyrs r)ÚweightÚreturncCs(t|krtks$ntd |¡ƒ‚|S)Nz$Permission weights must be 1-10: {0})Ú MIN_WEIGHTÚ MAX_WEIGHTÚ ValueErrorÚformat)r!rrr Úvalidate_weight!sr')Ú directionr"cCs|tvrtd |¡ƒ‚|S)Nz'Invalid information flow direction: {0})ÚINFOFLOW_DIRECTIONSr%r&)r(rrr Úvalidate_direction(sr*c@sfeZdZUdZedeƒZedeƒZede ƒZ e e d<e e d<de e e e dd œd d „Ze d œd d„ZdS)ÚMappingz1A mapping for a permission in the permission map.r!r(ÚenabledÚclass_ÚpermFN)Úperm_mapÚ classnameÚ permissionÚcreater"cCs‚||_||_||_|rD||jvr,tƒ|j|<ddddœ|j||<n:||jvr^t d |¡¡‚||j|vr~t d ||¡¡‚dS)Nrr T)r(r!r,ú{0} is not mapped.z{0}:{1} is not mapped.)Z _perm_mapr-r.rr Ú UnmappedClassr&ZUnmappedPermission)Úselfr/r0r1r2rrr Ú__init__=s   þ ÿzMapping.__init__©r"cCs$|j|jkr|j|jkS|j|jkS©N)r-r.)r5Úotherrrr Ú__lt__Ts  zMapping.__lt__)F)rrrrr r'r!r*r(Úboolr,ÚstrrÚ MapStructr6r:rrrr r+3s    ÿÿ r+c@s8eZdZdZd.eeddœdd„Zedœdd„Zddœd d „Ze e dœd d „Z eddœd d„Z eddœdd„Z e edœdd„Zee e dœdd„Zeee dœdd„Zeddœdd„Zeeddœdd„Zeddœdd„Zeeddœd d!„Zedd"œd#d$„Zeed%œd&d'„Zeeedd(œd)d*„Zeeedd+œd,d-„ZdS)/Ú PermissionMapz-Permission Map for information flow analysis.N)Ú permmapfiler"cCsLt t¡|_tƒ|_||r(| |¡n t d¡}d  |j ¡}| |¡dS)ú\ Parameter: permmapfile The path to the permission map to load. Zsetoolsz{0}/setools/perm_mapN) ÚloggingZ getLoggerrÚlogrÚ_permmapÚloadÚ pkg_resourcesZget_distributionr&Úlocation)r5r?ZdistroÚpathrrr r6_s    zPermissionMap.__init__r7cCs|jSr8)Ú _permmapfile©r5rrr Ú__str__pszPermissionMap.__str__cCs8t t¡}|j|_t |j¡|_|j|_||t|ƒ<|Sr8)r>Ú__new__rBÚcopyÚdeepcopyrCrHÚid)r5ÚmemoZnewobjrrr Ú __deepcopy__ss   zPermissionMap.__deepcopy__ccs(| ¡D]}| |¡D] }|VqqdSr8)ÚclassesÚperms)r5ÚclsÚmappingrrr Ú__iter__{s zPermissionMap.__iter__c Csv|j d |¡¡t|dƒ��}d}d}d}d}|j ¡t|dd�D�]Ü\}}| ¡} t| ƒdksF| dddkrvqF|dkrôzt | dƒ}Wn>t yÌ} z&t   d ||| d¡¡| ‚WYd} ~ n d} ~ 00|dkrît   d  ||| d¡¡‚d }qF|d k�rêt| ƒd k�s| dd k�r.t   d  ||| ¡¡‚t | dƒ} zt | d ƒ} Wn@