函数逻辑报告

Linux Kernel

v5.5.9

Brick Technologies Co., Ltd

Source Code:kernel\auditsc.c Create Date:2022-07-27 12:30:11
Last Modify:2020-03-17 16:31:21 Copyright©Brick
首页 函数Tree
注解内核,赢得工具下载SCCTEnglish

函数名称:Compare a task_struct with an audit_rule. Return 1 on match, 0* otherwise.* If task_creation is true, this is an explicit indication that we are* filtering a task rule at task creation time. This and tsk == current are

函数原型:static int audit_filter_rules(struct task_struct *tsk, struct audit_krule *rule, struct audit_context *ctx, struct audit_names *name, enum audit_state *state, bool task_creation)

返回类型:int

参数:

类型参数名称
struct task_struct *tsk
struct audit_krule *rule
struct audit_context *ctx
struct audit_names *name
enum audit_state *state
booltask_creation
446  need_sid等于1
450  cred等于cu_dereference_check() - rcu_dereference with debug checking*@p: The pointer to read, prior to dereferencing*@c: The conditions under which the dereference will take place* Do an rcu_dereference(), but check that the conditions under which the(安全管理凭证, tsk == 当前进程 || task_creation)
452 i小于field_count循环
453  f等于fields[i]
455  result等于0
460  pid等于task_tgid_nr(tsk)
461  result等于audit_comparator(pid, op, val)
462  退出
463  :type恒等于AUDIT_PPID
464  如果ctx
469  退出
470  :type恒等于AUDIT_EXE
472  如果op恒等于Audit_not_equalresult等于非result
474  退出
475  :type恒等于AUDIT_UID
477  退出
478  :type恒等于AUDIT_EUID
480  退出
481  :type恒等于AUDIT_SUID
483  退出
484  :type恒等于AUDIT_FSUID
486  退出
487  :type恒等于AUDIT_GID
489  如果op恒等于Audit_equal
490  如果非resultresult等于a simple bsearch
492  否则如果op恒等于Audit_not_equal
493  如果resultresult等于非a simple bsearch
496  退出
497  :type恒等于AUDIT_EGID
499  如果op恒等于Audit_equal
500  如果非resultresult等于a simple bsearch
502  否则如果op恒等于Audit_not_equal
503  如果resultresult等于非a simple bsearch
506  退出
507  :type恒等于AUDIT_SGID
509  退出
510  :type恒等于AUDIT_FSGID
512  退出
513  :type恒等于Session ID
516  退出
517  :type恒等于AUDIT_PERS
519  退出
520  :type恒等于AUDIT_ARCH
521  如果ctxresult等于audit_comparator(arch, op, val)
523  退出
525  :type恒等于AUDIT_EXIT
526  如果ctx返回值result等于audit_comparator(返回码, op, val)
528  退出
530  如果ctx返回值
536  退出
538  如果name
539  如果audit_comparator(MAJOR(dev), op, val)或audit_comparator(MAJOR(rdev), op, val)则result先自加
542  否则如果ctx
546  result先自加
547  退出
551  退出
552  :type恒等于AUDIT_DEVMINOR
553  如果name
554  如果audit_comparator(MINOR(dev), op, val)或audit_comparator(MINOR(rdev), op, val)则result先自加
557  否则如果ctx
561  result先自加
562  退出
566  退出
567  :type恒等于AUDIT_INODE
568  如果nameresult等于audit_comparator(ino, op, val)
570  否则如果ctx
572  如果audit_comparator(ino, op, val)则
573  result先自加
574  退出
578  退出
579  :type恒等于AUDIT_OBJ_UID
580  如果name
582  否则如果ctx
584  如果audit_uid_comparator(uid, op, uid)则
585  result先自加
586  退出
590  退出
591  :type恒等于AUDIT_OBJ_GID
592  如果name
594  否则如果ctx
596  如果audit_gid_comparator(gid, op, gid)则
597  result先自加
598  退出
602  退出
603  :type恒等于AUDIT_WATCH
604  如果name
608  如果op恒等于Audit_not_equalresult等于非result
611  退出
612  :type恒等于AUDIT_DIR
613  如果ctx
615  如果op恒等于Audit_not_equalresult等于非result
618  退出
619  :type恒等于AUDIT_LOGINUID
620  result等于audit_uid_comparator(audit_get_loginuid(tsk), op, uid)
622  退出
623  :type恒等于AUDIT_LOGINUID_SET
624  result等于audit_comparator(audit_loginuid_set(tsk), op, val)
625  退出
626  :type恒等于AUDIT_SADDR_FAM
627  如果sockaddrresult等于audit_comparator(address family , op, val)
630  退出
631  :type恒等于security label user
632  :type恒等于security label role
633  :type恒等于security label type
634  :type恒等于security label sensitivity label
635  :type恒等于security label clearance label
641  如果lsm_rule
642  如果need_sid
644  need_sid等于0
650  退出
651  :type恒等于AUDIT_OBJ_USER
652  :type恒等于AUDIT_OBJ_ROLE
653  :type恒等于AUDIT_OBJ_TYPE
654  :type恒等于AUDIT_OBJ_LEV_LOW
655  :type恒等于AUDIT_OBJ_LEV_HIGH
658  如果lsm_rule
660  如果name
666  否则如果ctx
673  result先自加
674  退出
679  如果非ctxtype不等于IPC record 退出
681  如果security_audit_rule_match(osid, type, op, lsm_rule)则result先自加
686  退出
687  :type恒等于AUDIT_ARG0
688  :type恒等于AUDIT_ARG1
689  :type恒等于AUDIT_ARG2
690  :type恒等于AUDIT_ARG3
691  如果ctxresult等于audit_comparator(调用参数[type - AUDIT_ARG0], op, val)
693  退出
694  :type恒等于AUDIT_FILTERKEY
696  result等于1
697  退出
698  :type恒等于AUDIT_PERM
699  result等于audit_match_perm(ctx, val)
700  如果op恒等于Audit_not_equalresult等于非result
702  退出
703  :type恒等于AUDIT_FILETYPE
704  result等于audit_match_filetype(ctx, val)
705  如果op恒等于Audit_not_equalresult等于非result
707  退出
708  :type恒等于AUDIT_FIELD_COMPARE
709  result等于audit_field_compare(tsk, cred, f, ctx, name)
710  退出
712  如果非result则返回:0
716  如果ctx
717  如果prio小于等于prio则返回:0
719  如果 ties events to rules
723  prio等于prio
727  state等于不审计
728  退出
730  state等于全程审计
731  退出
733  返回:1
调用者
名称描述
audit_filter_taskAt process creation time, we can determine if system-call auditing is* completely disabled for this task. Since we only have the task* structure at this point, we can only check uid and gid.
audit_filter_syscallAt syscall entry and exit time, this filter is called if the* audit_state is not low enough that auditing cannot take place, but is* also not high enough that we already know we have to write an audit* record (i
audit_filter_inode_nameGiven an audit_name check the inode hash table to see if they match.* Called holding the rcu read lock to protect the use of audit_inode_hash