staging: android: logger: enforce GID and CAP check on log flush
authorCharndeep Grewal <csgrewa@tycho.ncsc.mil>
Wed, 27 Feb 2013 06:07:38 +0000 (22:07 -0800)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Thu, 22 Apr 2021 09:02:56 +0000 (11:02 +0200)
Restrict log flushing to those in the logs group, or
anyone with CAP_SYSLOG.

Cc: Android Kernel Team <kernel-team@android.com>
Cc: Charndeep Grewal <csgrewa@tycho.ncsc.mil>
Signed-off-by: Charndeep Grewal <csgrewa@tycho.ncsc.mil>
Signed-off-by: John Stultz <john.stultz@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/android/logger.c

index cfa6061..b14a557 100644 (file)
@@ -695,6 +695,11 @@ static long logger_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
                        ret = -EBADF;
                        break;
                }
+               if (!(in_egroup_p(file->f_dentry->d_inode->i_gid) ||
+                               capable(CAP_SYSLOG))) {
+                       ret = -EPERM;
+                       break;
+               }
                list_for_each_entry(reader, &log->readers, list)
                        reader->r_off = log->w_off;
                log->head = log->w_off;