+
        e                        a  R t0 t ^ RIt^RIHtHt ^RIHt ^RIHt ^RI	H
t
Ht Rt] ^ k Rt] ^k Rt] ^k R	t] ^k R
t] ^k Rt] ^k Rt] ^k  ! R R]4      tR# )    N)	exception	policyrep)RBACRuleQuery)CheckerModule)ConfigDescriptorConfigSetDescriptorsourcetargetexempt_sourceexempt_targetexpect_sourceexpect_target
AssertRBACc                     a a ] tR t^t oRtRt]! ]]]	]
]]34      t]]P                   ,          ! R4      t]]P                   ,          ! R4      t]]P                   ,          ! RRRR7      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RtVtV ;t# )r   z?Checker module for asserting a RBAC allow rule exists (or not).assert_rbaclookup_roleFT)strictexpandc                Z   < V ^8  d   QhRS[ P                  RS[RS[S[S[3,          RR/# )   policy	checknameconfigreturnN)r   SELinuxPolicystrdict)format__classdict__s   "A/usr/lib64/python3.14/site-packages/setools/checker/assertrbac.py__annotate__AssertRBAC.__annotate__(   s?     X Xy66 X3 Xc3hX,0X    c                B  < \         SV `  WV4       VP                  \        4      V n        VP                  \
        4      V n        VP                  \        4      V n        VP                  \        4      V n
        VP                  \        4      V n        VP                  \        4      V n        \        V P                  V P                  34      '       g   \         P"                  ! R 4      hV P                  V P                  ,          pV'       d5   V P$                  P'                  RRP)                  R V 4       4       24       V P                  V P                  ,          pV'       d7   V P$                  P'                  RRP)                  R V 4       4       24       R# R# )z5At least one of source or target options must be set.z,Overlap in expect_source and exempt_source: z, c              3   8   "   T F  qP                   x  K  	  R # 5iNname.0is   & r    	<genexpr>&AssertRBAC.__init__.<locals>.<genexpr>;        &T7S!vv7S   z,Overlap in expect_target and exempt_target: c              3   8   "   T F  qP                   x  K  	  R # 5ir&   r'   r)   s   & r    r,   r-   @   r.   r/   N)super__init__get
SOURCE_OPTr	   
TARGET_OPTr
   EXEMPT_SRC_OPTr   EXEMPT_TGT_OPTr   EXPECT_SRC_OPTr   EXPECT_TGT_OPTr   anyr   InvalidCheckValueloginfojoin)selfr   r   r   source_exempt_expect_overlaptarget_exempt_expect_overlap	__class__s   &&&&  r    r2   AssertRBAC.__init__(   sE    	F3jj,jj,#ZZ7#ZZ7#ZZ7#ZZ7DKK-..--GI I (,'9'9D<N<N'N$'HHMMH!YY&T7S&TTUW X (,'9'9D<N<N'N$'HHMMH!YY&T7S&TTUW X (r#   c                T   < V ^8  d   QhRS[ S[P                  S[,          ,          /# )r   r   )listr   AnyRBACRuler   )r   r   s   "r    r!   r"   B   s$     & &T)//#56 &r#   c                h   \        V P                  V P                  34      '       g   Q R 4       hV P                  P	                  R4       \        V P                  V P                  V P                  RR7      p\        V P                  4      p\        V P                  4      p. p\        VP                  4       4       F  p\        VP                  P                  4       4      p\        VP                  P                  4       4      pW&,          pW7,          pW`P                  ,
          V P                  ,
          '       dW   WpP                  ,
          V P                  ,
          '       d.   V P                  \!        V4      4       VP#                  V4       K  V P%                  \!        V4      4       K  	  V F+  pRV R2p	V P                  V	4       VP#                  V	4       K-  	  V F+  pRV R2p	V P                  V	4       VP#                  V	4       K-  	  V P                  P'                  V R24       V# )z)AssertRBAC no options set, this is a bug.z#Checking RBAC allow rule assertion.)r	   r
   ruletypezExpected rule with source "z" not found.zExpected rule with target "z failure(s))allow)r:   r	   r
   r<   r=   r   r   setr   r   sortedresultsr   r   r   log_failr   appendlog_okdebug)
r?   queryunseen_sourcesunseen_targetsfailuresrulesrcstgtsitemfailures
   &         r    runAssertRBAC.runB   s   DKK-..[0[[.;<dkk%)[[%)[['13
 T//0T//0685==?+Dt{{))+,Dt{{))+,D"N"N)))D,>,>>>...1C1CCCc$i(%CI& , #D4TF-HGMM'"OOG$ #
 #D4TF-HGMM'"OOG$ #
 	(;/0r#   )r   r   r   r   r	   r
   )__name__
__module____qualname____firstlineno____doc__
check_type	frozensetr4   r5   r6   r7   r8   r9   check_configr   r   Roler	   r
   r   r   r   r   r   r2   rZ   __static_attributes____classdictcell____classcell__)rB   r   s   @@r    r   r      s     IJj*nn,n> ?L inn-m<Finn-m<F'	7e\`aM'	7e\`aM'	7d[_`M'	7d[_`MX X4& & &r#   c                p   V ^8  d   Qh/ ^ \         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d   \        P                  \        ,          ;R&   ^\         9   d,   \        P                  \        \        R3,          ,          ;R&   # )	r   r4   r5   r6   r7   r8   r9   .__all__)__conditional_annotations__typingFinalr   tuple)r   s   "r    r!   r!      s     ) (FLL (  ) (FLL (  4 3S! 3  4 3S! 3  4 3S! 3  4 3S! 3  9 8eCHo	& 8 r#   )r   )rj   rk    r   r   rbacrulequeryr   checkermoduler   descriptorsr   r   r4   r5   r6   r7   r8   r9   ri   r   r!   )rj   s   @r    <module>rr      s_     # ) ( > (
 ( (
 ($3 3$3 3$3 3$3 3)8 8P Pr#   