Messages in this thread Patch in this message | | | From | Torben Hohn <> | Subject | [PATCH 3/3] Check for write permission on FD based posix-clocks | Date | Thu, 3 Mar 2011 18:26:14 +0100 |
| |
pc_clock_settime() and pc_clock_adjtime() did not check whether the fd was opened in write mode.
It was possible to set a clock, when we only had read permissions.
for completeness, we would also need to check for Read permissions on the read operations. but that would be a bit paranoid, probably.
Signed-off-by: Torben Hohn <torbenh@gmx.de> Cc: Richard Cochran <richard.cochran@omicron.at> Cc: John Stultz <johnstul@us.ibm.com> Cc: Thomas Gleixner <tglx@linutronix.de> --- kernel/time/posix-clock.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/kernel/time/posix-clock.c b/kernel/time/posix-clock.c index 04498cb..25028dd 100644 --- a/kernel/time/posix-clock.c +++ b/kernel/time/posix-clock.c @@ -287,11 +287,16 @@ static int pc_clock_adjtime(clockid_t id, struct timex *tx) if (err) return err; + if ((cd.fp->f_mode & FMODE_WRITE) == 0) { + err = -EACCES; + goto out; + } + if (cd.clk->ops.clock_adjtime) err = cd.clk->ops.clock_adjtime(cd.clk, tx); else err = -EOPNOTSUPP; - +out: put_clock_desc(&cd); return err; @@ -344,11 +349,16 @@ static int pc_clock_settime(clockid_t id, const struct timespec *ts) if (err) return err; + if ((cd.fp->f_mode & FMODE_WRITE) == 0) { + err = -EACCES; + goto out; + } + if (cd.clk->ops.clock_settime) err = cd.clk->ops.clock_settime(cd.clk, ts); else err = -EOPNOTSUPP; - +out: put_clock_desc(&cd); return err; -- 1.7.2.3
| |