[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20170919215551.kaphydcaqzoesgvy@smitten>
Date: Tue, 19 Sep 2017 15:55:51 -0600
From: Tycho Andersen <tycho@...ker.com>
To: Kees Cook <keescook@...omium.org>
Cc: LKML <linux-kernel@...r.kernel.org>, criu@...nvz.org,
Andy Lutomirski <luto@...capital.net>,
Oleg Nesterov <oleg@...hat.com>
Subject: Re: [PATCH] ptrace, seccomp: add support for retrieving seccomp flags
On Tue, Sep 19, 2017 at 02:43:51PM -0700, Kees Cook wrote:
> On Tue, Sep 19, 2017 at 2:09 PM, Tycho Andersen <tycho@...ker.com> wrote:
> > Hi Kees,
> >
> > On Tue, Sep 19, 2017 at 01:08:28PM -0700, Kees Cook wrote:
> >> On Tue, Sep 19, 2017 at 10:47 AM, Tycho Andersen <tycho@...ker.com> wrote:
> >> > With the new SECCOMP_FILTER_FLAG_LOG, we need to be able to extract these
> >> > flags for checkpoint restore, since they describe the state of a filter.
> >> >
> >> > So, let's add PTRACE_SECCOMP_GET_FLAGS, similar to ..._GET_FILTER, which
> >> > returns the flags of the nth filter.
> >>
> >> Can you split this up into factoring out the nth helper, and then
> >> adding the new get?
> >>
> >> For naming, perhaps "GET_FILTER_FLAGS" instead of "GET_FLAGS" since
> >> there may be seccomp flags in the future, etc.
> >
> > Sure, I'll do both of these.
> >
> >> Is there any sane way to add the flags to the existing GET_FILTER?
> >
> > I looked at this, and I don't think so. Unfortunately, we didn't use
> > any structure for the output, it's just the raw bytes of the filter
> > with the length used as the return value. I suppose we could append
> > the flags after the bytes of the filter, but that seems... very ugly
> > :). Let me know if you want to go that route.
>
> I think if we can make the new GET_FILTER_stuff interface more
> extensible, we should cover any future needs for per-filter content.
Ok, are you interested in something more general than
GET_FILTER_FLAGS? Maybe GET_FILTER_METADATA with uapi struct like:
struct seccomp_metadata {
unsigned int flags;
};
which you call by something like,
struct seccomp_metadata mymeta;
size = ptrace(PTRACE_SECCOMP_GET_FILTER_METADATA, pid, sizeof(mymeta), &mymeta);
if (size < 0) {
/* error */
}
if (size != sizeof(mymeta)) {
/* struct seccomp_metadata sizes are different */
}
?
Tycho
Powered by blists - more mailing lists