From: Fan Wu <wufan@linux.microsoft.com>
To: Paul Moore <paul@paul-moore.com>, "Serge E. Hallyn" <serge@hallyn.com>
Cc: corbet@lwn.net, zohar@linux.ibm.com, jmorris@namei.org,
tytso@mit.edu, ebiggers@kernel.org, axboe@kernel.dk,
agk@redhat.com, snitzer@kernel.org, mpatocka@redhat.com,
eparis@redhat.com, linux-doc@vger.kernel.org,
linux-integrity@vger.kernel.org,
linux-security-module@vger.kernel.org, fsverity@lists.linux.dev,
linux-block@vger.kernel.org, dm-devel@lists.linux.dev,
audit@vger.kernel.org, linux-kernel@vger.kernel.org,
Deven Bowers <deven.desai@linux.microsoft.com>
Subject: Re: [PATCH v20 02/20] ipe: add policy parser
Date: Wed, 14 Aug 2024 11:23:39 -0700 [thread overview]
Message-ID: <cbf1caa0-835b-4d1d-aed5-9741eb10cf8b@linux.microsoft.com> (raw)
In-Reply-To: <CAHC9VhTYT3RTG1FbnZQ2F68a16gU9_QJ-=LSGbroP-40tpRTiw@mail.gmail.com>
On 8/13/2024 6:53 PM, Paul Moore wrote:
> On Tue, Aug 13, 2024 at 1:54 PM Fan Wu <wufan@linux.microsoft.com> wrote:
>> On 8/10/2024 8:50 AM, Serge E. Hallyn wrote:
>>> On Fri, Aug 02, 2024 at 11:08:16PM -0700, Fan Wu wrote:
>>>> From: Deven Bowers <deven.desai@linux.microsoft.com>
>>>>
>>>> IPE's interpretation of the what the user trusts is accomplished through
>>>
>>> nit: "of what the user trusts" (drop the extra 'the')
>>>
>>>> its policy. IPE's design is to not provide support for a single trust
>>>> provider, but to support multiple providers to enable the end-user to
>>>> choose the best one to seek their needs.
>>>>
>>>> This requires the policy to be rather flexible and modular so that
>>>> integrity providers, like fs-verity, dm-verity, or some other system,
>>>> can plug into the policy with minimal code changes.
>>>>
>>>> Signed-off-by: Deven Bowers <deven.desai@linux.microsoft.com>
>>>> Signed-off-by: Fan Wu <wufan@linux.microsoft.com>
>>>
>>> This all looks fine. Just one comment below.
>>>
>> Thank you for reviewing this!
>>
>>>
>>>> +/**
>>>> + * parse_rule() - parse a policy rule line.
>>>> + * @line: Supplies rule line to be parsed.
>>>> + * @p: Supplies the partial parsed policy.
>>>> + *
>>>> + * Return:
>>>> + * * 0 - Success
>>>> + * * %-ENOMEM - Out of memory (OOM)
>>>> + * * %-EBADMSG - Policy syntax error
>>>> + */
>>>> +static int parse_rule(char *line, struct ipe_parsed_policy *p)
>>>> +{
>>>> + enum ipe_action_type action = IPE_ACTION_INVALID;
>>>> + enum ipe_op_type op = IPE_OP_INVALID;
>>>> + bool is_default_rule = false;
>>>> + struct ipe_rule *r = NULL;
>>>> + bool first_token = true;
>>>> + bool op_parsed = false;
>>>> + int rc = 0;
>>>> + char *t;
>>>> +
>>>> + r = kzalloc(sizeof(*r), GFP_KERNEL);
>>>> + if (!r)
>>>> + return -ENOMEM;
>>>> +
>>>> + INIT_LIST_HEAD(&r->next);
>>>> + INIT_LIST_HEAD(&r->props);
>>>> +
>>>> + while (t = strsep(&line, IPE_POLICY_DELIM), line) {
>>>
>>> If line is passed in as NULL, t will be NULL on the first test. Then
>>> you'll break out and call parse_action(NULL), which calls
>>> match_token(NULL, ...), which I do not think is safe.
>>>
>>> I realize the current caller won't pass in NULL, but it seems worth
>>> checking for here in case some future caller is added by someone
>>> who's unaware.
>>>
>>> Or, maybe add 'line must not be null' to the function description.
>>
>> Yes, I agree that adding a NULL check would be better. I will include it
>> in the next version.
>
> We're still waiting to hear back from the device-mapper devs, but if
> this is the only change required to the patchset I can add a NULL
> check when I merge the patchset as it seems silly to resend the entire
> patchset for this. Fan, do you want to share the code snippet with
> the NULL check so Serge can take a look?
>
Sure, here is the diff.
diff --git a/security/ipe/policy_parser.c b/security/ipe/policy_parser.c
index 32064262348a..0926b442e32a 100644
--- a/security/ipe/policy_parser.c
+++ b/security/ipe/policy_parser.c
@@ -309,6 +309,9 @@ static int parse_rule(char *line, struct
ipe_parsed_policy *p)
int rc = 0;
char *t;
+ if (IS_ERR_OR_NULL(line))
+ return -EBADMSG;
+
r = kzalloc(sizeof(*r), GFP_KERNEL);
if (!r)
return -ENOMEM;
-Fan
next prev parent reply other threads:[~2024-08-14 18:23 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-03 6:08 [PATCH v20 00/20] Integrity Policy Enforcement LSM (IPE) Fan Wu
2024-08-03 6:08 ` [PATCH v20 01/20] security: add ipe lsm Fan Wu
2024-08-03 6:08 ` [PATCH v20 02/20] ipe: add policy parser Fan Wu
2024-08-10 15:50 ` Serge E. Hallyn
2024-08-13 17:54 ` Fan Wu
2024-08-14 1:53 ` Paul Moore
2024-08-14 18:23 ` Fan Wu [this message]
2024-08-15 19:11 ` Paul Moore
2024-08-03 6:08 ` [PATCH v20 03/20] ipe: add evaluation loop Fan Wu
2024-08-10 20:05 ` Serge E. Hallyn
2024-08-03 6:08 ` [PATCH v20 04/20] ipe: add LSM hooks on execution and kernel read Fan Wu
2024-08-03 6:08 ` [PATCH v20 05/20] initramfs|security: Add a security hook to do_populate_rootfs() Fan Wu
2024-08-03 6:08 ` [PATCH v20 06/20] ipe: introduce 'boot_verified' as a trust provider Fan Wu
2024-08-03 6:08 ` [PATCH v20 07/20] security: add new securityfs delete function Fan Wu
2024-08-03 6:08 ` [PATCH v20 08/20] ipe: add userspace interface Fan Wu
2024-08-03 6:08 ` [PATCH v20 09/20] uapi|audit|ipe: add ipe auditing support Fan Wu
2024-08-03 6:08 ` [PATCH v20 10/20] ipe: add permissive toggle Fan Wu
2024-08-03 6:08 ` [PATCH v20 11/20] block|lsm: Add LSM blob and new LSM hooks for block devices Fan Wu
2024-08-03 6:08 ` [PATCH v20 12/20] dm verity: expose root hash digest and signature data to LSMs Fan Wu
2024-08-08 22:38 ` Fan Wu
2024-08-15 19:19 ` Paul Moore
2024-08-16 13:35 ` Mikulas Patocka
2024-08-16 19:11 ` Fan Wu
2024-08-18 17:22 ` Paul Moore
2024-08-19 17:47 ` Fan Wu
2024-08-19 19:40 ` Paul Moore
2024-08-03 6:08 ` [PATCH v20 13/20] ipe: add support for dm-verity as a trust provider Fan Wu
2024-08-03 6:08 ` [PATCH v20 14/20] security: add security_inode_setintegrity() hook Fan Wu
2024-08-03 6:08 ` [PATCH v20 15/20] fsverity: expose verified fsverity built-in signatures to LSMs Fan Wu
2024-08-05 18:51 ` Eric Biggers
2024-08-03 6:08 ` [PATCH v20 16/20] ipe: enable support for fs-verity as a trust provider Fan Wu
2024-08-03 6:08 ` [PATCH v20 17/20] scripts: add boot policy generation program Fan Wu
2024-08-03 6:08 ` [PATCH v20 18/20] ipe: kunit test for parser Fan Wu
2024-08-03 6:08 ` [PATCH v20 19/20] Documentation: add ipe documentation Fan Wu
2024-08-03 6:08 ` [PATCH v20 20/20] MAINTAINERS: ipe: add ipe maintainer information Fan Wu
2024-08-03 8:14 ` Paul Menzel
2024-08-06 20:54 ` Paul Moore
2024-08-07 4:48 ` Paul Menzel
2024-08-07 18:01 ` Fan Wu
2024-08-07 19:42 ` Paul Moore
2024-08-06 20:59 ` [PATCH v20 00/20] Integrity Policy Enforcement LSM (IPE) Paul Moore
2024-08-20 2:51 ` Paul Moore
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=cbf1caa0-835b-4d1d-aed5-9741eb10cf8b@linux.microsoft.com \
--to=wufan@linux.microsoft.com \
--cc=agk@redhat.com \
--cc=audit@vger.kernel.org \
--cc=axboe@kernel.dk \
--cc=corbet@lwn.net \
--cc=deven.desai@linux.microsoft.com \
--cc=dm-devel@lists.linux.dev \
--cc=ebiggers@kernel.org \
--cc=eparis@redhat.com \
--cc=fsverity@lists.linux.dev \
--cc=jmorris@namei.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-integrity@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=paul@paul-moore.com \
--cc=serge@hallyn.com \
--cc=snitzer@kernel.org \
--cc=tytso@mit.edu \
--cc=zohar@linux.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.