lkml.org 
[lkml]   [2008]   [Oct]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH] proc: add "personality" to process status file
    On Thu, 2 Oct 2008, Kees Cook wrote:

    > There is no sane way to query the personality flags of arbitrary process
    > from userspace. This adds the flags to the /proc/$pid/status file.
    > For example, to detect READ_IMPLIES_EXEC:
    >
    > $ ./32bit-sleeper &
    > [1] 6732
    > $ grep ^Pers /proc/6732/status
    > Personality: 00000000
    > $ execstack -s 32bit-sleeper
    > $ ./32bit-slepper &
    > [2] 6735
    > $ grep ^Pers /proc/6735/status
    > Personality: 00040000
    >
    > Signed-off-by: Kees Cook <kees.cook@canonical.com>
    > ---
    > fs/proc/array.c | 6 ++++--
    > include/linux/sched.h | 3 +--
    > 2 files changed, 5 insertions(+), 4 deletions(-)

    Hey you,

    The patch seems to be missing an update to Documentation/filesystems/proc.txt !
    Please add that. TIA.

    > diff --git a/fs/proc/array.c b/fs/proc/array.c
    > index 71c9be5..1235fab 100644
    > --- a/fs/proc/array.c
    > +++ b/fs/proc/array.c
    > @@ -182,13 +182,15 @@ static inline void task_state(struct seq_file *m, struct pid_namespace *ns,
    > "PPid:\t%d\n"
    > "TracerPid:\t%d\n"
    > "Uid:\t%d\t%d\t%d\t%d\n"
    > - "Gid:\t%d\t%d\t%d\t%d\n",
    > + "Gid:\t%d\t%d\t%d\t%d\n"
    > + "Personality:\t%08x\n",
    > get_task_state(p),
    > task_tgid_nr_ns(p, ns),
    > pid_nr_ns(pid, ns),
    > ppid, tpid,
    > p->uid, p->euid, p->suid, p->fsuid,
    > - p->gid, p->egid, p->sgid, p->fsgid);
    > + p->gid, p->egid, p->sgid, p->fsgid,
    > + p->personality);
    >
    > task_lock(p);
    > if (p->files)
    > diff --git a/include/linux/sched.h b/include/linux/sched.h
    > index 3d9120c..f2fc441 100644
    > --- a/include/linux/sched.h
    > +++ b/include/linux/sched.h
    > @@ -1085,8 +1085,7 @@ struct task_struct {
    > int exit_state;
    > int exit_code, exit_signal;
    > int pdeath_signal; /* The signal sent when the parent dies */
    > - /* ??? */
    > - unsigned int personality;
    > + unsigned int personality; /* Special-case bits (linux/personality.h) */
    > unsigned did_exec:1;
    > pid_t pid;
    > pid_t tgid;
    >

    --
    ~Randy


    \
     
     \ /
      Last update: 2008-10-03 00:49    [W:4.638 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site