lkml.org 
[lkml]   [2022]   [Jan]   [24]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.16 0335/1039] selinux: fix potential memleak in selinux_add_opt()
    Date
    From: Bernard Zhao <bernard@vivo.com>

    [ Upstream commit 2e08df3c7c4e4e74e3dd5104c100f0bf6288aaa8 ]

    This patch try to fix potential memleak in error branch.

    Fixes: ba6418623385 ("selinux: new helper - selinux_add_opt()")
    Signed-off-by: Bernard Zhao <bernard@vivo.com>
    [PM: tweak the subject line, add Fixes tag]
    Signed-off-by: Paul Moore <paul@paul-moore.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    security/selinux/hooks.c | 12 ++++++++++--
    1 file changed, 10 insertions(+), 2 deletions(-)

    diff --git a/security/selinux/hooks.c b/security/selinux/hooks.c
    index dde4ecc0cd186..49b4f59db35e7 100644
    --- a/security/selinux/hooks.c
    +++ b/security/selinux/hooks.c
    @@ -988,18 +988,22 @@ out:
    static int selinux_add_opt(int token, const char *s, void **mnt_opts)
    {
    struct selinux_mnt_opts *opts = *mnt_opts;
    + bool is_alloc_opts = false;

    if (token == Opt_seclabel) /* eaten and completely ignored */
    return 0;

    + if (!s)
    + return -ENOMEM;
    +
    if (!opts) {
    opts = kzalloc(sizeof(struct selinux_mnt_opts), GFP_KERNEL);
    if (!opts)
    return -ENOMEM;
    *mnt_opts = opts;
    + is_alloc_opts = true;
    }
    - if (!s)
    - return -ENOMEM;
    +
    switch (token) {
    case Opt_context:
    if (opts->context || opts->defcontext)
    @@ -1024,6 +1028,10 @@ static int selinux_add_opt(int token, const char *s, void **mnt_opts)
    }
    return 0;
    Einval:
    + if (is_alloc_opts) {
    + kfree(opts);
    + *mnt_opts = NULL;
    + }
    pr_warn(SEL_MOUNT_FAIL_MSG);
    return -EINVAL;
    }
    --
    2.34.1


    \
     
     \ /
      Last update: 2022-01-25 01:14    [W:4.069 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site