lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <202110130344.odiZFWOO-lkp@intel.com>
Date:   Wed, 13 Oct 2021 10:16:39 +0300
From:   Dan Carpenter <dan.carpenter@...cle.com>
To:     kbuild@...ts.01.org, Richard Guy Briggs <rgb@...hat.com>,
        Gaosheng Cui <cuigaosheng1@...wei.com>, paul@...l-moore.com,
        eparis@...hat.com
Cc:     lkp@...el.com, kbuild-all@...ts.01.org, linux-audit@...hat.com,
        linux-kernel@...r.kernel.org, xiujianfeng@...wei.com,
        wangweiyang2@...wei.com
Subject: Re: [PATCH -next] audit: return early if the rule has a lower
 priority

[ It's Gaosheng's patch which triggers the warning but I think it's
  actually the dereference which should be changed.  I've added Richard
  to the CC list. -dan ]

Hi Gaosheng,

url:    https://github.com/0day-ci/linux/commits/Gaosheng-Cui/audit-return-early-if-the-rule-has-a-lower-priority/20211012-093102
base:    d3134eb5de8546a214c028fb7195e764b89da7d4
config: x86_64-randconfig-m001-20211012 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@...el.com>
Reported-by: Dan Carpenter <dan.carpenter@...cle.com>

smatch warnings:
kernel/auditsc.c:653 audit_filter_rules() error: we previously assumed 'ctx' could be null (see line 473)

vim +/ctx +653 kernel/auditsc.c

^1da177e4c3f41 Linus Torvalds     2005-04-16  461  static int audit_filter_rules(struct task_struct *tsk,
93315ed6dd12da Amy Griffis        2006-02-07  462  			      struct audit_krule *rule,
^1da177e4c3f41 Linus Torvalds     2005-04-16  463  			      struct audit_context *ctx,
f368c07d7214a7 Amy Griffis        2006-04-07  464  			      struct audit_names *name,
f562988350361b Tony Jones         2011-04-27  465  			      enum audit_state *state,
f562988350361b Tony Jones         2011-04-27  466  			      bool task_creation)
^1da177e4c3f41 Linus Torvalds     2005-04-16  467  {
f562988350361b Tony Jones         2011-04-27  468  	const struct cred *cred;
5195d8e217a786 Eric Paris         2012-01-03  469  	int i, need_sid = 1;
3dc7e3153eddfc Darrel Goeddel     2006-03-10  470  	u32 sid;
8fae47705685fc Richard Guy Briggs 2016-11-20  471  	unsigned int sessionid;
3dc7e3153eddfc Darrel Goeddel     2006-03-10  472  
046a8e46eefb9d Gaosheng Cui       2021-10-12 @473  	if (ctx && rule->prio <= ctx->prio)
                                                            ^^^
Checked here.

046a8e46eefb9d Gaosheng Cui       2021-10-12  474  		return 0;
046a8e46eefb9d Gaosheng Cui       2021-10-12  475  
f562988350361b Tony Jones         2011-04-27  476  	cred = rcu_dereference_check(tsk->cred, tsk == current || task_creation);
f562988350361b Tony Jones         2011-04-27  477  
^1da177e4c3f41 Linus Torvalds     2005-04-16  478  	for (i = 0; i < rule->field_count; i++) {
93315ed6dd12da Amy Griffis        2006-02-07  479  		struct audit_field *f = &rule->fields[i];
5195d8e217a786 Eric Paris         2012-01-03  480  		struct audit_names *n;
^1da177e4c3f41 Linus Torvalds     2005-04-16  481  		int result = 0;
f1dc4867ff41b7 Richard Guy Briggs 2013-12-11  482  		pid_t pid;
^1da177e4c3f41 Linus Torvalds     2005-04-16  483  
93315ed6dd12da Amy Griffis        2006-02-07  484  		switch (f->type) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  485  		case AUDIT_PID:
fa2bea2f5cca5b Paul Moore         2016-08-30  486  			pid = task_tgid_nr(tsk);
f1dc4867ff41b7 Richard Guy Briggs 2013-12-11  487  			result = audit_comparator(pid, f->op, f->val);
^1da177e4c3f41 Linus Torvalds     2005-04-16  488  			break;
3c66251e573219 Al Viro            2006-05-06  489  		case AUDIT_PPID:
419c58f11fb732 Alexander Viro     2006-09-29  490  			if (ctx) {
419c58f11fb732 Alexander Viro     2006-09-29  491  				if (!ctx->ppid)
c92cdeb45eea38 Richard Guy Briggs 2013-12-10  492  					ctx->ppid = task_ppid_nr(tsk);
3c66251e573219 Al Viro            2006-05-06  493  				result = audit_comparator(ctx->ppid, f->op, f->val);
419c58f11fb732 Alexander Viro     2006-09-29  494  			}
3c66251e573219 Al Viro            2006-05-06  495  			break;
34d99af52ad40b Richard Guy Briggs 2015-08-05  496  		case AUDIT_EXE:
34d99af52ad40b Richard Guy Briggs 2015-08-05  497  			result = audit_exe_compare(tsk, rule->exe);
23bcc480dac204 Ondrej Mosnáček    2018-04-09  498  			if (f->op == Audit_not_equal)
23bcc480dac204 Ondrej Mosnáček    2018-04-09  499  				result = !result;
34d99af52ad40b Richard Guy Briggs 2015-08-05  500  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  501  		case AUDIT_UID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  502  			result = audit_uid_comparator(cred->uid, f->op, f->uid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  503  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  504  		case AUDIT_EUID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  505  			result = audit_uid_comparator(cred->euid, f->op, f->uid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  506  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  507  		case AUDIT_SUID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  508  			result = audit_uid_comparator(cred->suid, f->op, f->uid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  509  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  510  		case AUDIT_FSUID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  511  			result = audit_uid_comparator(cred->fsuid, f->op, f->uid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  512  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  513  		case AUDIT_GID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  514  			result = audit_gid_comparator(cred->gid, f->op, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  515  			if (f->op == Audit_equal) {
37eebe39c9731a Matvejchikov Ilya  2011-12-13  516  				if (!result)
af85d1772e31fe Ondrej Mosnáček    2018-06-05  517  					result = groups_search(cred->group_info, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  518  			} else if (f->op == Audit_not_equal) {
37eebe39c9731a Matvejchikov Ilya  2011-12-13  519  				if (result)
af85d1772e31fe Ondrej Mosnáček    2018-06-05  520  					result = !groups_search(cred->group_info, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  521  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  522  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  523  		case AUDIT_EGID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  524  			result = audit_gid_comparator(cred->egid, f->op, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  525  			if (f->op == Audit_equal) {
37eebe39c9731a Matvejchikov Ilya  2011-12-13  526  				if (!result)
af85d1772e31fe Ondrej Mosnáček    2018-06-05  527  					result = groups_search(cred->group_info, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  528  			} else if (f->op == Audit_not_equal) {
37eebe39c9731a Matvejchikov Ilya  2011-12-13  529  				if (result)
af85d1772e31fe Ondrej Mosnáček    2018-06-05  530  					result = !groups_search(cred->group_info, f->gid);
37eebe39c9731a Matvejchikov Ilya  2011-12-13  531  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  532  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  533  		case AUDIT_SGID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  534  			result = audit_gid_comparator(cred->sgid, f->op, f->gid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  535  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  536  		case AUDIT_FSGID:
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  537  			result = audit_gid_comparator(cred->fsgid, f->op, f->gid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  538  			break;
8fae47705685fc Richard Guy Briggs 2016-11-20  539  		case AUDIT_SESSIONID:
5b71388663c092 Ondrej Mosnáček    2018-05-17  540  			sessionid = audit_get_sessionid(tsk);
8fae47705685fc Richard Guy Briggs 2016-11-20  541  			result = audit_comparator(sessionid, f->op, f->val);
8fae47705685fc Richard Guy Briggs 2016-11-20  542  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  543  		case AUDIT_PERS:
93315ed6dd12da Amy Griffis        2006-02-07  544  			result = audit_comparator(tsk->personality, f->op, f->val);
^1da177e4c3f41 Linus Torvalds     2005-04-16  545  			break;
2fd6f58ba6efc8 David Woodhouse    2005-04-29  546  		case AUDIT_ARCH:
2fd6f58ba6efc8 David Woodhouse    2005-04-29  547  			if (ctx)
93315ed6dd12da Amy Griffis        2006-02-07  548  				result = audit_comparator(ctx->arch, f->op, f->val);
2fd6f58ba6efc8 David Woodhouse    2005-04-29  549  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  550  
^1da177e4c3f41 Linus Torvalds     2005-04-16  551  		case AUDIT_EXIT:
ba59eae7238572 Alex Shi           2020-11-06  552  			if (ctx && ctx->return_valid != AUDITSC_INVALID)
93315ed6dd12da Amy Griffis        2006-02-07  553  				result = audit_comparator(ctx->return_code, f->op, f->val);
^1da177e4c3f41 Linus Torvalds     2005-04-16  554  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  555  		case AUDIT_SUCCESS:
ba59eae7238572 Alex Shi           2020-11-06  556  			if (ctx && ctx->return_valid != AUDITSC_INVALID) {
93315ed6dd12da Amy Griffis        2006-02-07  557  				if (f->val)
93315ed6dd12da Amy Griffis        2006-02-07  558  					result = audit_comparator(ctx->return_valid, f->op, AUDITSC_SUCCESS);
b01f2cc1c37ac3 David Woodhouse    2005-08-27  559  				else
93315ed6dd12da Amy Griffis        2006-02-07  560  					result = audit_comparator(ctx->return_valid, f->op, AUDITSC_FAILURE);
b01f2cc1c37ac3 David Woodhouse    2005-08-27  561  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  562  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  563  		case AUDIT_DEVMAJOR:
16c174bd95cb07 Eric Paris         2012-01-03  564  			if (name) {
16c174bd95cb07 Eric Paris         2012-01-03  565  				if (audit_comparator(MAJOR(name->dev), f->op, f->val) ||
16c174bd95cb07 Eric Paris         2012-01-03  566  				    audit_comparator(MAJOR(name->rdev), f->op, f->val))
16c174bd95cb07 Eric Paris         2012-01-03  567  					++result;
16c174bd95cb07 Eric Paris         2012-01-03  568  			} else if (ctx) {
5195d8e217a786 Eric Paris         2012-01-03  569  				list_for_each_entry(n, &ctx->names_list, list) {
16c174bd95cb07 Eric Paris         2012-01-03  570  					if (audit_comparator(MAJOR(n->dev), f->op, f->val) ||
16c174bd95cb07 Eric Paris         2012-01-03  571  					    audit_comparator(MAJOR(n->rdev), f->op, f->val)) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  572  						++result;
^1da177e4c3f41 Linus Torvalds     2005-04-16  573  						break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  574  					}
^1da177e4c3f41 Linus Torvalds     2005-04-16  575  				}
^1da177e4c3f41 Linus Torvalds     2005-04-16  576  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  577  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  578  		case AUDIT_DEVMINOR:
16c174bd95cb07 Eric Paris         2012-01-03  579  			if (name) {
16c174bd95cb07 Eric Paris         2012-01-03  580  				if (audit_comparator(MINOR(name->dev), f->op, f->val) ||
16c174bd95cb07 Eric Paris         2012-01-03  581  				    audit_comparator(MINOR(name->rdev), f->op, f->val))
16c174bd95cb07 Eric Paris         2012-01-03  582  					++result;
16c174bd95cb07 Eric Paris         2012-01-03  583  			} else if (ctx) {
5195d8e217a786 Eric Paris         2012-01-03  584  				list_for_each_entry(n, &ctx->names_list, list) {
16c174bd95cb07 Eric Paris         2012-01-03  585  					if (audit_comparator(MINOR(n->dev), f->op, f->val) ||
16c174bd95cb07 Eric Paris         2012-01-03  586  					    audit_comparator(MINOR(n->rdev), f->op, f->val)) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  587  						++result;
^1da177e4c3f41 Linus Torvalds     2005-04-16  588  						break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  589  					}
^1da177e4c3f41 Linus Torvalds     2005-04-16  590  				}
^1da177e4c3f41 Linus Torvalds     2005-04-16  591  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  592  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  593  		case AUDIT_INODE:
f368c07d7214a7 Amy Griffis        2006-04-07  594  			if (name)
db510fc5cd9b9d Richard Guy Briggs 2013-07-04  595  				result = audit_comparator(name->ino, f->op, f->val);
f368c07d7214a7 Amy Griffis        2006-04-07  596  			else if (ctx) {
5195d8e217a786 Eric Paris         2012-01-03  597  				list_for_each_entry(n, &ctx->names_list, list) {
5195d8e217a786 Eric Paris         2012-01-03  598  					if (audit_comparator(n->ino, f->op, f->val)) {
^1da177e4c3f41 Linus Torvalds     2005-04-16  599  						++result;
^1da177e4c3f41 Linus Torvalds     2005-04-16  600  						break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  601  					}
^1da177e4c3f41 Linus Torvalds     2005-04-16  602  				}
^1da177e4c3f41 Linus Torvalds     2005-04-16  603  			}
^1da177e4c3f41 Linus Torvalds     2005-04-16  604  			break;
efaffd6e441786 Eric Paris         2012-01-03  605  		case AUDIT_OBJ_UID:
efaffd6e441786 Eric Paris         2012-01-03  606  			if (name) {
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  607  				result = audit_uid_comparator(name->uid, f->op, f->uid);
efaffd6e441786 Eric Paris         2012-01-03  608  			} else if (ctx) {
efaffd6e441786 Eric Paris         2012-01-03  609  				list_for_each_entry(n, &ctx->names_list, list) {
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  610  					if (audit_uid_comparator(n->uid, f->op, f->uid)) {
efaffd6e441786 Eric Paris         2012-01-03  611  						++result;
efaffd6e441786 Eric Paris         2012-01-03  612  						break;
efaffd6e441786 Eric Paris         2012-01-03  613  					}
efaffd6e441786 Eric Paris         2012-01-03  614  				}
efaffd6e441786 Eric Paris         2012-01-03  615  			}
efaffd6e441786 Eric Paris         2012-01-03  616  			break;
54d3218b31aee5 Eric Paris         2012-01-03  617  		case AUDIT_OBJ_GID:
54d3218b31aee5 Eric Paris         2012-01-03  618  			if (name) {
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  619  				result = audit_gid_comparator(name->gid, f->op, f->gid);
54d3218b31aee5 Eric Paris         2012-01-03  620  			} else if (ctx) {
54d3218b31aee5 Eric Paris         2012-01-03  621  				list_for_each_entry(n, &ctx->names_list, list) {
ca57ec0f00c3f1 Eric W. Biederman  2012-09-11  622  					if (audit_gid_comparator(n->gid, f->op, f->gid)) {
54d3218b31aee5 Eric Paris         2012-01-03  623  						++result;
54d3218b31aee5 Eric Paris         2012-01-03  624  						break;
54d3218b31aee5 Eric Paris         2012-01-03  625  					}
54d3218b31aee5 Eric Paris         2012-01-03  626  				}
54d3218b31aee5 Eric Paris         2012-01-03  627  			}
54d3218b31aee5 Eric Paris         2012-01-03  628  			break;
f368c07d7214a7 Amy Griffis        2006-04-07  629  		case AUDIT_WATCH:
0223fad3c98a95 Richard Guy Briggs 2019-05-22  630  			if (name) {
0223fad3c98a95 Richard Guy Briggs 2019-05-22  631  				result = audit_watch_compare(rule->watch,
0223fad3c98a95 Richard Guy Briggs 2019-05-22  632  							     name->ino,
0223fad3c98a95 Richard Guy Briggs 2019-05-22  633  							     name->dev);
0223fad3c98a95 Richard Guy Briggs 2019-05-22  634  				if (f->op == Audit_not_equal)
0223fad3c98a95 Richard Guy Briggs 2019-05-22  635  					result = !result;
0223fad3c98a95 Richard Guy Briggs 2019-05-22  636  			}
f368c07d7214a7 Amy Griffis        2006-04-07  637  			break;
74c3cbe33bc077 Al Viro            2007-07-22  638  		case AUDIT_DIR:
0223fad3c98a95 Richard Guy Briggs 2019-05-22  639  			if (ctx) {
74c3cbe33bc077 Al Viro            2007-07-22  640  				result = match_tree_refs(ctx, rule->tree);
0223fad3c98a95 Richard Guy Briggs 2019-05-22  641  				if (f->op == Audit_not_equal)
0223fad3c98a95 Richard Guy Briggs 2019-05-22  642  					result = !result;
0223fad3c98a95 Richard Guy Briggs 2019-05-22  643  			}
74c3cbe33bc077 Al Viro            2007-07-22  644  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  645  		case AUDIT_LOGINUID:
38f80590486e38 Richard Guy Briggs 2018-05-16  646  			result = audit_uid_comparator(audit_get_loginuid(tsk),
38f80590486e38 Richard Guy Briggs 2018-05-16  647  						      f->op, f->uid);
^1da177e4c3f41 Linus Torvalds     2005-04-16  648  			break;
780a7654cee8d6 Eric W. Biederman  2013-04-09  649  		case AUDIT_LOGINUID_SET:
780a7654cee8d6 Eric W. Biederman  2013-04-09  650  			result = audit_comparator(audit_loginuid_set(tsk), f->op, f->val);
780a7654cee8d6 Eric W. Biederman  2013-04-09  651  			break;
bf361231c295d9 Richard Guy Briggs 2019-05-09  652  		case AUDIT_SADDR_FAM:
bf361231c295d9 Richard Guy Briggs 2019-05-09 @653  			if (ctx->sockaddr)
                                                                            ^^^^^^^^^^^^^
Everywhere else checks if "ctx" is NULL before dereferencing it.

bf361231c295d9 Richard Guy Briggs 2019-05-09  654  				result = audit_comparator(ctx->sockaddr->ss_family,
bf361231c295d9 Richard Guy Briggs 2019-05-09  655  							  f->op, f->val);
bf361231c295d9 Richard Guy Briggs 2019-05-09  656  			break;
3a6b9f85c641a3 Darrel Goeddel     2006-06-29  657  		case AUDIT_SUBJ_USER:
3a6b9f85c641a3 Darrel Goeddel     2006-06-29  658  		case AUDIT_SUBJ_ROLE:
3a6b9f85c641a3 Darrel Goeddel     2006-06-29  659  		case AUDIT_SUBJ_TYPE:
3a6b9f85c641a3 Darrel Goeddel     2006-06-29  660  		case AUDIT_SUBJ_SEN:
3a6b9f85c641a3 Darrel Goeddel     2006-06-29  661  		case AUDIT_SUBJ_CLR:
3dc7e3153eddfc Darrel Goeddel     2006-03-10  662  			/* NOTE: this may return negative values indicating
3dc7e3153eddfc Darrel Goeddel     2006-03-10  663  			   a temporary error.  We simply treat this as a
3dc7e3153eddfc Darrel Goeddel     2006-03-10  664  			   match for now to avoid losing information that
3dc7e3153eddfc Darrel Goeddel     2006-03-10  665  			   may be wanted.   An error message will also be
3dc7e3153eddfc Darrel Goeddel     2006-03-10  666  			   logged upon error */
04305e4aff8b05 Ahmed S. Darwish   2008-04-19  667  			if (f->lsm_rule) {
2ad312d2093ae5 Steve Grubb        2006-04-11  668  				if (need_sid) {
4ebd7651bfc899 Paul Moore         2021-02-19  669  					security_task_getsecid_subj(tsk, &sid);
2ad312d2093ae5 Steve Grubb        2006-04-11  670  					need_sid = 0;
2ad312d2093ae5 Steve Grubb        2006-04-11  671  				}
d7a96f3a1ae279 Ahmed S. Darwish   2008-03-01  672  				result = security_audit_rule_match(sid, f->type,
3dc7e3153eddfc Darrel Goeddel     2006-03-10  673  								   f->op,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  674  								   f->lsm_rule);
2ad312d2093ae5 Steve Grubb        2006-04-11  675  			}
3dc7e3153eddfc Darrel Goeddel     2006-03-10  676  			break;
6e5a2d1d325968 Darrel Goeddel     2006-06-29  677  		case AUDIT_OBJ_USER:
6e5a2d1d325968 Darrel Goeddel     2006-06-29  678  		case AUDIT_OBJ_ROLE:
6e5a2d1d325968 Darrel Goeddel     2006-06-29  679  		case AUDIT_OBJ_TYPE:
6e5a2d1d325968 Darrel Goeddel     2006-06-29  680  		case AUDIT_OBJ_LEV_LOW:
6e5a2d1d325968 Darrel Goeddel     2006-06-29  681  		case AUDIT_OBJ_LEV_HIGH:
6e5a2d1d325968 Darrel Goeddel     2006-06-29  682  			/* The above note for AUDIT_SUBJ_USER...AUDIT_SUBJ_CLR
6e5a2d1d325968 Darrel Goeddel     2006-06-29  683  			   also applies here */
04305e4aff8b05 Ahmed S. Darwish   2008-04-19  684  			if (f->lsm_rule) {
6e5a2d1d325968 Darrel Goeddel     2006-06-29  685  				/* Find files that match */
6e5a2d1d325968 Darrel Goeddel     2006-06-29  686  				if (name) {
d7a96f3a1ae279 Ahmed S. Darwish   2008-03-01  687  					result = security_audit_rule_match(
90462a5bd30c6e Richard Guy Briggs 2019-01-31  688  								name->osid,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  689  								f->type,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  690  								f->op,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  691  								f->lsm_rule);
6e5a2d1d325968 Darrel Goeddel     2006-06-29  692  				} else if (ctx) {
5195d8e217a786 Eric Paris         2012-01-03  693  					list_for_each_entry(n, &ctx->names_list, list) {
90462a5bd30c6e Richard Guy Briggs 2019-01-31  694  						if (security_audit_rule_match(
90462a5bd30c6e Richard Guy Briggs 2019-01-31  695  								n->osid,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  696  								f->type,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  697  								f->op,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  698  								f->lsm_rule)) {
6e5a2d1d325968 Darrel Goeddel     2006-06-29  699  							++result;
6e5a2d1d325968 Darrel Goeddel     2006-06-29  700  							break;
6e5a2d1d325968 Darrel Goeddel     2006-06-29  701  						}
6e5a2d1d325968 Darrel Goeddel     2006-06-29  702  					}
6e5a2d1d325968 Darrel Goeddel     2006-06-29  703  				}
6e5a2d1d325968 Darrel Goeddel     2006-06-29  704  				/* Find ipc objects that match */
a33e6751003c5a Al Viro            2008-12-10  705  				if (!ctx || ctx->type != AUDIT_IPC)
6e5a2d1d325968 Darrel Goeddel     2006-06-29  706  					break;
a33e6751003c5a Al Viro            2008-12-10  707  				if (security_audit_rule_match(ctx->ipc.osid,
a33e6751003c5a Al Viro            2008-12-10  708  							      f->type, f->op,
90462a5bd30c6e Richard Guy Briggs 2019-01-31  709  							      f->lsm_rule))
a33e6751003c5a Al Viro            2008-12-10  710  					++result;
6e5a2d1d325968 Darrel Goeddel     2006-06-29  711  			}
6e5a2d1d325968 Darrel Goeddel     2006-06-29  712  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  713  		case AUDIT_ARG0:
^1da177e4c3f41 Linus Torvalds     2005-04-16  714  		case AUDIT_ARG1:
^1da177e4c3f41 Linus Torvalds     2005-04-16  715  		case AUDIT_ARG2:
^1da177e4c3f41 Linus Torvalds     2005-04-16  716  		case AUDIT_ARG3:
^1da177e4c3f41 Linus Torvalds     2005-04-16  717  			if (ctx)
93315ed6dd12da Amy Griffis        2006-02-07  718  				result = audit_comparator(ctx->argv[f->type-AUDIT_ARG0], f->op, f->val);
^1da177e4c3f41 Linus Torvalds     2005-04-16  719  			break;
5adc8a6adc91c4 Amy Griffis        2006-06-14  720  		case AUDIT_FILTERKEY:
5adc8a6adc91c4 Amy Griffis        2006-06-14  721  			/* ignore this field for filtering */
5adc8a6adc91c4 Amy Griffis        2006-06-14  722  			result = 1;
5adc8a6adc91c4 Amy Griffis        2006-06-14  723  			break;
55669bfa141b48 Al Viro            2006-08-31  724  		case AUDIT_PERM:
55669bfa141b48 Al Viro            2006-08-31  725  			result = audit_match_perm(ctx, f->val);
0223fad3c98a95 Richard Guy Briggs 2019-05-22  726  			if (f->op == Audit_not_equal)
0223fad3c98a95 Richard Guy Briggs 2019-05-22  727  				result = !result;
55669bfa141b48 Al Viro            2006-08-31  728  			break;
8b67dca9420474 Al Viro            2008-04-28  729  		case AUDIT_FILETYPE:
8b67dca9420474 Al Viro            2008-04-28  730  			result = audit_match_filetype(ctx, f->val);
0223fad3c98a95 Richard Guy Briggs 2019-05-22  731  			if (f->op == Audit_not_equal)
0223fad3c98a95 Richard Guy Briggs 2019-05-22  732  				result = !result;
8b67dca9420474 Al Viro            2008-04-28  733  			break;
02d86a568c6d2d Eric Paris         2012-01-03  734  		case AUDIT_FIELD_COMPARE:
02d86a568c6d2d Eric Paris         2012-01-03  735  			result = audit_field_compare(tsk, cred, f, ctx, name);
02d86a568c6d2d Eric Paris         2012-01-03  736  			break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  737  		}
f562988350361b Tony Jones         2011-04-27  738  		if (!result)
^1da177e4c3f41 Linus Torvalds     2005-04-16  739  			return 0;
^1da177e4c3f41 Linus Torvalds     2005-04-16  740  	}
0590b9335a1c72 Al Viro            2008-12-14  741  
0590b9335a1c72 Al Viro            2008-12-14  742  	if (ctx) {
0590b9335a1c72 Al Viro            2008-12-14  743  		if (rule->filterkey) {
0590b9335a1c72 Al Viro            2008-12-14  744  			kfree(ctx->filterkey);
5adc8a6adc91c4 Amy Griffis        2006-06-14  745  			ctx->filterkey = kstrdup(rule->filterkey, GFP_ATOMIC);
0590b9335a1c72 Al Viro            2008-12-14  746  		}
0590b9335a1c72 Al Viro            2008-12-14  747  		ctx->prio = rule->prio;
0590b9335a1c72 Al Viro            2008-12-14  748  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  749  	switch (rule->action) {
66b12abc846d31 Paul Moore         2016-06-16  750  	case AUDIT_NEVER:
619ed58ac4e2fb Sergey Nazarov     2021-06-08  751  		*state = AUDIT_STATE_DISABLED;
66b12abc846d31 Paul Moore         2016-06-16  752  		break;
66b12abc846d31 Paul Moore         2016-06-16  753  	case AUDIT_ALWAYS:
619ed58ac4e2fb Sergey Nazarov     2021-06-08  754  		*state = AUDIT_STATE_RECORD;
66b12abc846d31 Paul Moore         2016-06-16  755  		break;
^1da177e4c3f41 Linus Torvalds     2005-04-16  756  	}
^1da177e4c3f41 Linus Torvalds     2005-04-16  757  	return 1;
^1da177e4c3f41 Linus Torvalds     2005-04-16  758  }

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ