[LTP] [PATCH] syscalls/read02: Don't pass invalid buffer to read when testing for bad fds

Peter Maydell peter.maydell@linaro.org
Fri Jul 15 12:45:31 CEST 2016


On 15 July 2016 at 11:38, Jan Stancek <jstancek@redhat.com> wrote:
>
>
> ----- Original Message -----
>> From: "Peter Maydell" <peter.maydell@linaro.org>
>> To: ltp@lists.linux.it
>> Cc: patches@linaro.org
>> Sent: Friday, 15 July, 2016 12:24:10 PM
>> Subject: [LTP] [PATCH] syscalls/read02: Don't pass invalid buffer to read     when testing for bad fds
>>
>> The read02 testcases 1 and 2 are intended to check the handling
>> of the read syscall with an invalid fd (should fail EBADF) and
>> an fd which is a directory (should fail EISDIR). However a bug
>> in the test code meant that it also passed a NULL pointer as
>> the buffer argument, and so the test only succeeded because of
>> the implementation detail that the kernel happens to check for
>> the EBADF and EISDIR errors before it checks the buffer pointer
>> validity for an EFAULT error.
>>
>> The 'buf' field in the test_case_t structure is supposed to be
>> a pointer to the address of the buffer, but it was being
>> initialised with the address of the buffer itself; fix this by
>> adding the extra indirection via a new 'bufaddr' variable, so
>> that the test is checking the condition it intends to and nothing
>> more.
>>
>> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
>
> I shortened subject a bit and pushed.

Wow, that was fast -- thanks! I have one or two other similar
"accidentally relying on ordering of error checks" cases
which I'll try to write patches for this afternoon.

-- PMM


More information about the ltp mailing list