Messages in this thread | | | Date | Sun, 13 Sep 2015 20:39:31 +0800 | Subject | Re: [PATCH] kernel/sysctl.c: If "count" including the terminating byte '\0' the write system call should retrun success. | From | Sean Fu <> |
| |
On Sat, Sep 12, 2015 at 1:01 AM, Eric W. Biederman <ebiederm@xmission.com> wrote: > Sean Fu <fxinrong@gmail.com> writes: > >>> Sounds like a reasonable compromise. Sean, can you make a patch that >>> only affects the one proc file (comment it well in the code), and have >>> it accept nothing past the '\0'. Even if someone passed in "1 \0 2", it >>> would only see "1 " >> The current code uses uniform handler (e.g. "proc_dointvec") for all >> same type proc file. >> So all integer type proc file are affected. > > No. I do not believe the proprietary binary application you are dealing > with writes to all proc files that use the proc_dointvec handler. I means all ctl_table whose .proc_handler is "proc_dointvec" are affected. > >> In fact, The behavior of all integer type proc file should be changed. > > Not at all. The only files that we can possibly justify changing today > are the files where an actual regression is being observed. > > Because quite frankly 5 years is way too long to wait to report a > regression. By and large software is reasonable and treats proc > files as text files where '\0' is an invalid character. 5 years is not enough long for distros, specially enterprise distros. The most of HuaWei machines run our SLES10sp3(2.6.16, SUSE LINUX ENTERPRISE SERVER). They use one enterprise version for 5+ years usually. > > Accepting a '\0' is not at all reasonable for a text interface. The > application that does it is buggy. It is hard to comprehend that the current kernel can accept two bytes "1 ", "1\t", "1\n" except "1\0". > > Eric
| |