Re: [PATCH] kernel/sysctl.c: If "count" including the terminating byte '\0' the write system call should retrun success.

From: Sean Fu
Date: Thu Aug 27 2015 - 04:32:42 EST


On Thu, Aug 27, 2015 at 10:32 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
> On Thu, 27 Aug 2015 08:17:29 +0800
> Sean Fu <fxinrong@xxxxxxxxx> wrote:
>
>> On Thu, Aug 27, 2015 at 4:36 AM, Steven Rostedt <rostedt@xxxxxxxxxxx> wrote:
>> > On Wed, 26 Aug 2015 23:48:01 +0800
>> > Sean Fu <fxinrong@xxxxxxxxx> wrote:
>> >
>> >
>> >> > Defending the patch, I can't imagine any user space code expecting the
>> >> > current behavior. The current behavior is that if you write "1\0" it
>> >> > will error out instead of accepting the "1". I can't come up with a
>> >> > scenario that would require userspace to expect "1\0" to fail. Can you?
>> >> Thanks
>> >
>> > Although, with the current patch, would "1\02" fail? It should.
>> Yes, "1\02" is equal to "1\2"(count=2) or "1\2\0"(count=3), So it should fail.
>
> Sorry, I meant "1\0 2"
In this case, The patch behavior is accepting the "1" and discarding
other bytes.
for (; left && vleft--; i++, first=0) { //vleft is 1 for integer
type or unsigned long type proc file

>
> -- Steve
>
>>
>> code
>> len = write(fd, "1\0\2", 3);
>>
>> strace execute result:
>> write(3, "1\2\0", 3) = -1 EINVAL (Invalid argument)
>>
>> >
>> > -- Steve
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/