Re: [PATCH 085/190] Revert "audit: fix a memory leak bug"

Paul Moore
2021-04-21T16:18:59Z

On Wed, Apr 21, 2021 at 9:04 AM Greg Kroah-Hartman
<gregkh@linuxfoundation.org> wrote:
>
> This reverts commit 70c4cf17e445264453bc5323db3e50aa0ac9e81f.
>
> Commits from @umn.edu addresses have been found to be submitted in "bad
> faith" to try to test the kernel community's ability to review "known
> malicious" changes. The result of these submissions can be found in a
> paper published at the 42nd IEEE Symposium on Security and Privacy
> entitled, "Open Source Insecurity: Stealthily Introducing
> Vulnerabilities via Hypocrite Commits" written by Qiushi Wu (University
> of Minnesota) and Kangjie Lu (University of Minnesota).
>
> Because of this, all submissions from this group must be reverted from
> the kernel tree and will need to be re-reviewed again to determine if
> they actually are a valid fix. Until that work is complete, remove this
> change to ensure that no problems are being introduced into the
> codebase.
>
> Cc: Wenwen Wang <wang6495@umn.edu>
> Cc: Richard Guy Briggs <rgb@redhat.com>
> Cc: Paul Moore <paul@paul-moore.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> ---
> kernel/auditfilter.c | 12 +++++-------
> 1 file changed, 5 insertions(+), 7 deletions(-)

NACK on this revert. I've looked at the original patch again this
morning, and the original patch still looks correct and doesn't appear
to introduce any new faults to the best of my understanding.

> diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
> index 333b3bcfc545..19f908b96000 100644
> --- a/kernel/auditfilter.c
> +++ b/kernel/auditfilter.c
> @@ -1125,24 +1125,22 @@ int audit_rule_change(int type, int seq, void *data, size_t datasz)
> int err = 0;
> struct audit_entry *entry;
>
> + entry = audit_data_to_entry(data, datasz);
> + if (IS_ERR(entry))
> + return PTR_ERR(entry);
> +
> switch (type) {
> case AUDIT_ADD_RULE:
> - entry = audit_data_to_entry(data, datasz);
> - if (IS_ERR(entry))
> - return PTR_ERR(entry);
> err = audit_add_rule(entry);
> audit_log_rule_change("add_rule", &entry->rule, !err);
> break;
> case AUDIT_DEL_RULE:
> - entry = audit_data_to_entry(data, datasz);
> - if (IS_ERR(entry))
> - return PTR_ERR(entry);
> err = audit_del_rule(entry);
> audit_log_rule_change("remove_rule", &entry->rule, !err);
> break;
> default:
> + err = -EINVAL;
> WARN_ON(1);
> - return -EINVAL;
> }
>
> if (err || type == AUDIT_DEL_RULE) {
> --
> 2.31.1

--
paul moore