From: "Serge E. Hallyn" <serue@us.ibm.com>
To: Stephen Smalley <sds@tycho.nsa.gov>
Cc: "Serge E. Hallyn" <serue@us.ibm.com>,
James Morris <jmorris@namei.org>, Andrew Morton <akpm@osdl.org>,
linux-kernel@vger.kernel.org, Chris Wright <chrisw@sous-sol.org>,
David Quigley <dpquigl@tycho.nsa.gov>,
Eric Paris <eparis@redhat.com>
Subject: Re: [PATCH] SELinux: Add security hook definition for getioprio and insert hooks
Date: Fri, 30 Jun 2006 19:26:04 -0500 [thread overview]
Message-ID: <20060701002604.GB18972@sergelap.austin.ibm.com> (raw)
In-Reply-To: <1151697500.29428.71.camel@moss-spartans.epoch.ncsc.mil>
Quoting Stephen Smalley (sds@tycho.nsa.gov):
> On Fri, 2006-06-30 at 14:37 -0500, Serge E. Hallyn wrote:
> > Quoting James Morris (jmorris@namei.org):
> > ...
> > > +static int get_task_ioprio(struct task_struct *p)
> > > +{
> > > + int ret;
> > > +
> > > + ret = security_task_getioprio(p);
> > > + if (ret)
> > > + goto out;
> > > + ret = p->ioprio;
> > > +out:
> > > + return ret;
> > > +}
> > ...
> > > do_each_task_pid(who, PIDTYPE_PGID, p) {
> > > + tmpio = get_task_ioprio(p);
> > > + if (tmpio < 0)
> > > + continue;
> > > if (ret == -ESRCH)
> > > - ret = p->ioprio;
> > > + ret = tmpio;
> > > else
> > > - ret = ioprio_best(ret, p->ioprio);
> > > + ret = ioprio_best(ret, tmpio);
> > ...
> > > + * @task_getioprio
> > > + * Check permission before getting the ioprio value of @p.
> > > + * @p contains the task_struct of process.
> > > + * Return 0 if permission is granted.
> >
> > A return value >0 is a problem here but isn't mentioned. the
> > get_task_ioprio() helper will return the the security_task_getioprio()
> > return value in htat case, but the do_each_task_pid loop will take it
> > as a valid return value.
>
> True, but that isn't limited to that hook - think what happens if
> inode_permission returns an arbitrary positive integer.
Well I don't know whether it's worth fixing for all of the lsm hooks,
maybe it is. But in this case in particular there is just no reason for
it, and the fix is trivial... Just switch the quoted parts to:
> +static int get_task_ioprio(struct task_struct *p)
> +{
> + int ret;
> +
> + ret = security_task_getioprio(p);
> + if (ret<0)
> + goto out;
> + ret = p->ioprio;
> +out:
> + return ret;
> +}
...
> do_each_task_pid(who, PIDTYPE_PGID, p) {
> + tmpio = get_task_ioprio(p);
> + if (tmpio < 0)
> + continue;
> if (ret == -ESRCH)
> - ret = p->ioprio;
> + ret = tmpio;
> else
> - ret = ioprio_best(ret, p->ioprio);
> + ret = ioprio_best(ret, tmpio);
...
> + * @task_getioprio
> + * Check permission before getting the ioprio value of @p.
> + * @p contains the task_struct of process.
> + * Return <0 if permission is denied, 0 if granted.
I'm not saying I'd expect this to be triggered, since most kernel and
lsm coders wouldn't think of returning >0 for error in any case... Yet
you never know. And again, there's just no reason for it.
-serge
prev parent reply other threads:[~2006-07-01 0:26 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-06-29 21:04 James Morris
2006-06-30 19:37 ` Serge E. Hallyn
2006-06-30 19:58 ` Stephen Smalley
2006-07-01 0:26 ` Serge E. Hallyn [this message]
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=20060701002604.GB18972@sergelap.austin.ibm.com \
--to=serue@us.ibm.com \
--cc=akpm@osdl.org \
--cc=chrisw@sous-sol.org \
--cc=dpquigl@tycho.nsa.gov \
--cc=eparis@redhat.com \
--cc=jmorris@namei.org \
--cc=linux-kernel@vger.kernel.org \
--cc=sds@tycho.nsa.gov \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®