lkml.org 
[lkml]   [2010]   [Mar]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[C/R v20][PATCH 72/96] Expose may_setuid() in user.h and add may_setgid() (v2)
    Date
    From: Dan Smith <danms@us.ibm.com>

    Make these helpers available to others.

    Changes in v2:
    - Avoid checking the groupinfo in ctx->realcred against the current in
    may_setgid()

    Signed-off-by: Dan Smith <danms@us.ibm.com>
    Acked-by: Serge E. Hallyn <serue@us.ibm.com>
    Tested-by: Serge E. Hallyn <serue@us.ibm.com>
    ---
    include/linux/user.h | 9 +++++++++
    kernel/user.c | 13 ++++++++++++-
    2 files changed, 21 insertions(+), 1 deletions(-)

    diff --git a/include/linux/user.h b/include/linux/user.h
    index 68daf84..c231e9c 100644
    --- a/include/linux/user.h
    +++ b/include/linux/user.h
    @@ -1 +1,10 @@
    +#ifndef _LINUX_USER_H
    +#define _LINUX_USER_H
    +
    #include <asm/user.h>
    +#include <linux/sched.h>
    +
    +extern int may_setuid(struct user_namespace *ns, uid_t uid);
    +extern int may_setgid(gid_t gid);
    +
    +#endif
    diff --git a/kernel/user.c b/kernel/user.c
    index 15f762c..8ddafea 100644
    --- a/kernel/user.c
    +++ b/kernel/user.c
    @@ -604,7 +604,7 @@ int checkpoint_user(struct ckpt_ctx *ctx, void *ptr)
    return do_checkpoint_user(ctx, (struct user_struct *) ptr);
    }

    -static int may_setuid(struct user_namespace *ns, uid_t uid)
    +int may_setuid(struct user_namespace *ns, uid_t uid)
    {
    /*
    * this next check will one day become
    @@ -631,6 +631,17 @@ static int may_setuid(struct user_namespace *ns, uid_t uid)
    return 0;
    }

    +int may_setgid(gid_t gid)
    +{
    + if (capable(CAP_SETGID))
    + return 1;
    +
    + if (in_egroup_p(gid))
    + return 1;
    +
    + return 0;
    +}
    +
    static struct user_struct *do_restore_user(struct ckpt_ctx *ctx)
    {
    struct user_struct *u;
    --
    1.6.3.3


    \
     
     \ /
      Last update: 2010-03-17 17:25    [W:0.023 / U:0.192 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site