+
    €Ú,iM  c                   sœ   a € R t0 t ^ RIHt ^ RIt^RIHt ^RIHt ^RIH	t	 ^RI
Ht Rt] ^ k Rt] ^k R	t] ^k Rt] ^k  ! R R
]	4      tR# )i    )ÚdefaultdictN)Ú	policyrep)ÚTERuleQuery)ÚCheckerModule)ÚConfigSetDescriptorÚexempt_write_domainÚexempt_exec_domainÚexempt_fileÚReadOnlyExecutablesc                   s(  a a€ ] tR t^t oRtRt]! ]]]	34      t
]]P                  ,          ! RRRR7      t]]P                  ,          ! RRRR7      t]]P                  ,          ! RRRR7      tV3R lV 3R lltV3R	 lR
 ltV3R lR ltRtVtV ;t# )r   z@Checker module for asserting all executable files are read-only.Zro_execsZlookup_type_or_attrFT)ZstrictÚexpandc                sZ   <€ V ^8„  d   QhRS[ P                  RS[RS[S[S[3,          RR/# )é   ÚpolicyÚ	checknameÚconfigÚreturnN)r   ZSELinuxPolicyÚstrZdict©ÚformatÚ__classdict__ó   "€Ú=/usr/lib64/python3.14/site-packages/setools/checker/roexec.pyÚ__annotate__Ú ReadOnlyExecutables.__annotate__$   s9   ø€ ÷ :ñ :™y×6Ñ6ð :Á3ð :Ù™c¡3˜hð:Ø,0ñ:ó    c                sÄ   <€ \         SV `  WV4       VP                  \        4      V n        VP                  \
        4      V n        VP                  \        4      V n        R # )N)	ZsuperÚ__init__ZgetÚEXEMPT_WRITEr   ÚEXEMPT_FILEr   ÚEXEMPT_EXECr   )Úselfr   r   r   Ú	__class__s   &&&&€r   r   ZReadOnlyExecutables.__init__$   sG   ø€ ô 	‰Ñ˜¨FÔ3Ø#)§:¡:¬lÓ#;ˆÔ Ø!Ÿ:™:¤kÓ2ˆÔØ"(§*¡*¬[Ó"9ˆÖr   c                sn   <€ V ^8„  d   QhRS[ S[P                  S[S[P                  ,          3,          /# ©r
   r   )r    r   ÚTypeÚsetÚAVRuler   r   r   r   r   ,   s-   ø€ ÷ ñ ¡k±)·.±.Á#Ái×FVÑFVÕBWÐ2WÕ&Xñ r   c                s   € V P                   P                  R 4       V P                   P                  RV P                  : 24       \        V P                  RRRR7      p\
        \        P                  \        \        P                  ,          3,          ! \        4      pVP                  4        FÜ  p\        VP                  P                  4       4      V P                  ,
          p\        VP                  P                  4       4      V P                  ,
          pV'       d	   V'       g!   V P                   P                  RV 24       K›  V F;  pV P                   P                  RV RV 24       W&,          P                  V4       K=  	  KÞ  	  V# )	z)Collecting list of executable file types.zself.exempt_exec_domain=©ZruletypeZtclassZpermszIgnoring execute rule: zDetermined z is executable by: ©Zallow©Zfile)ZexecuteZexecute_no_trans)ÚlogÚdebugr   r   r   r    r   r   r    r!   ÚresultsÚsourcer	   Útargetr   Úadd)r   ÚqueryZ	collectedÚruleZsourcesZtargetsZts   &      r   Ú_collect_executablesZ(ReadOnlyExecutables._collect_executables,   s)  € Ø‰‰ÐBÔCØ‰‰Ð2˜$×1Ñ1Ñ3Ð4Ô5Ü˜DŸK™KØ%/Ø#,Ø"AôCˆô
  ¤	§¡´´I×4DÑ4DÕ0EÐ EÖFÄsÓKˆ	Ø—M‘M–OˆDÜ˜$Ÿ+™+×,Ñ,Ó.Ó/°$×2IÑ2IÕIˆGÜ˜$Ÿ+™+×,Ñ,Ó.Ó/°$×2BÑ2BÕBˆG÷ §'Ø—‘—‘Ð!8¸¸Ð?Ô@ÙãØ—‘—‘ ¨Q¨CÐ/BÀ4À&ÐIÔJð •× Ñ  Ö&ó	 ñ $ð Ðr   c                sD   <€ V ^8„  d   QhRS[ S[P                  ,          /# r   )Zlistr   r   r   r   r   r   r   F   s   ø€ ÷ 'ñ '‘T™)Ÿ.™.Õ)ñ 'r   c                sx  € V P                   P                  R 4       \        V P                  RRRR7      pV P	                  4       p\        \        4      pVP                  4        F›  pV P                   P                  RV R24       WAn	        \        VP                  4       4       FV  p\        VP                  P                  4       4      V P                  ,
          '       g   K?  W4,          P                  V4       KX  	  K  	  \        VP                  4       4       FÜ  pV P                   P#                  R4       V P                   P#                  RV R24       V P                   P#                  R4       \        W$,          4       F"  pV P                   P#                  RV R	24       K$  	  V P                   P#                  R
4       \        W4,          4       F  pV P%                  \'        V4      4       K  	  KÞ  	  V P                   P                  \)        V4       R24       \        VP                  4       4      # )z#Checking executables are read-only.r"   zChecking if executable type z is writable.z
------------

zExecutable type z is writable.

zExecute rules:
z    * Z
z
Write rules:
z failure(s)r#   r$   )ÚwriteZappend)r%   Zinfor   r   r-   r    r    Zkeysr&   r)   Zsortedr'   r(   r	   r   r*   Zoutputr.   Zlog_failr   Zlen)r   r+   ZexecutablesZfailuresZ	exec_typer,   s   &     r   ÚrunZReadOnlyExecutables.runF   s­  € Ø‰‰Ð;Ô<ä˜DŸK™KØ%/Ø#,Ø"5ô7ˆð ×/Ñ/Ó1ˆÜœsÓ#ˆà$×)Ñ)Ö+ˆIØH‰HN‰NÐ9¸)¸ÀMÐRÔSà$ŒLÜ˜uŸ}™}›Ö/Üt—{‘{×)Ñ)Ó+Ó,¨t×/GÑ/G×GÖGØÕ'×+Ñ+¨DÖ1ó 0ñ	 ,ô   §¡£Ö0ˆIØK‰K×ÑÐ2Ô3ØK‰K×ÑÐ 0°°Ð;LÐMÔNØK‰K×ÑÐ0Ô1Ü˜{Õ5Ö6Ø—‘×!Ñ! F¨4¨&°Ð"3Ö4ñ 7ð K‰K×ÑÐ0Ô1Ü˜xÕ2Ö3Ø—‘œc $›iÖ(ó 4ñ 1ð 	‰‰œ#˜h›-˜¨Ð4Ô5Üh—m‘m“oÓ&Ð&r   )r   r   r   )Z__name__Z
__module__Z__qualname__Z__firstlineno__Z__doc__Z
check_typeZ	frozensetr   r   r   Zcheck_configr   r   r   r   r   r   r   r-   r/   Z__static_attributes__Z__classdictcell__Z__classcell__)r   r   s   @@r   r   r      s‘   ù‡ € áJà€JÙ˜l¨K¸ÐEÓF€Là-¨i¯n©nÖ=Ø e°Dô:Ðà% i§n¡nÖ5Ø e°Dô:€Kà,¨Y¯^©^Ö<Ø e°Dô:Ð÷:ó :÷ð ÷4'÷ 'ð 'r   c                sz  € V ^8„  d   Qh/ ^ \         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d,   \        P                  \        \        R3,          ,          ;R&   # )r
   r   r   r   .Ú__all__)Ú__conditional_annotations__ÚtypingZFinalr   Ztuple)r   s   "r   r   r      s}   € × #Ñ #÷ 8Ò 7Œfl‰lœ3ÕÑ 7ñ $÷ 6Ò 5ŒV\‰\œ#ÕÑ 5ñ $÷ /Ò .ŒV\‰\œ#ÕÑ .ñ $÷ BÒ AŒ‰”eœC ˜H•oÕ	&Ñ Aò $r   )r   )r1   Zcollectionsr    r2   Z r   Zterulequeryr   Zcheckermoduler   Zdescriptorsr   r   r   r   r0   r   r   )r1   s   @r   Ú<module>r3      sK   øð÷ $Ò #Û å Ý %å (Ý ,à"7€Ó 7Ø!5€Ó 5Ø!.€Ó .à)A€Ó AôN'˜-ö N'r   