Messages in this thread | | | From | (Eric W. Biederman) | Date | Fri, 22 Jun 2012 07:21:21 -0700 | Subject | Re: [PATCH v2] fs: introduce pipe-only dump mode suid_dumpable=3 |
| |
Kees Cook <keescook@chromium.org> writes:
> This patch introduces suid_dumpable=3 to allow privilege-changed processes > to be dumped only to a pipe handler (and not directly to disk). The value > of suid_dumpable=2 is now deprecated, and attempting to set this sysctl > value returns -EINVAL.
Your patch descriptoin is wrong. Deprecate means something is encouraged not to be used not that the functionality is removed. I think what you are trying to say is that the value suid_dumpable=2 is now historic.
Your implementation is absolutely gross. Reading the value from twice from user space?? Is an if statement that hard to code?
Eric
> +/* Allow only the integers 0, 1, and 3. */ > +static int proc_dointvec_suid_dumpable(struct ctl_table *table, int write, > + void __user *buffer, size_t *lenp, loff_t *ppos) > +{ > + int rc, min, max; > + struct do_proc_dointvec_minmax_conv_param param = { > + .min = &min, > + .max = &max, > + }; > + > + min = 0; > + max = 1; > + rc = do_proc_dointvec(table, write, buffer, lenp, ppos, > + do_proc_dointvec_minmax_conv, ¶m); > + if (rc != -EINVAL) > + return rc; > + > + min = 3; > + max = 3; > + rc = do_proc_dointvec(table, write, buffer, lenp, ppos, > + do_proc_dointvec_minmax_conv, ¶m); > + return rc; > +} > + > static int __do_proc_doulongvec_minmax(void *data, struct ctl_table *table, int write, > void __user *buffer, > size_t *lenp, loff_t *ppos,
| |