[LTP] [PATCH] Check recvmmsg exists before entering fuzzy loop
Richard Palethorpe
rpalethorpe@suse.de
Thu Jan 10 10:50:52 CET 2019
Hello,
Li Wang <liwang@redhat.com> writes:
> Hi Richard,
>
> Richard Palethorpe <rpalethorpe@suse.com> wrote:
>
>> Avoid thread B entering infinite loop if recvmmsg doesn't exist causing
>> tst_brk to be called and thread A to make an ungraceful exit.
>>
>> A more general fix can be added to tst_fuzzy_sync as well, but will take
>> longer to develop.
>
> Yes, now we just add a syscall checking in setup() as a workaround,
> for the fzsync library issue we could take more time to find a best
> solution after this new LTP releasing.
>
>>
>> Signed-off-by: Richard Palethorpe <rpalethorpe@suse.com>
>> Reported-by: Li Wang <liwang@redhat.com>
>> ---
>> testcases/cve/cve-2016-7117.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/testcases/cve/cve-2016-7117.c b/testcases/cve/cve-2016-7117.c
>> index 6290af077..effab083d 100644
>> --- a/testcases/cve/cve-2016-7117.c
>> +++ b/testcases/cve/cve-2016-7117.c
>> @@ -99,6 +99,10 @@ static void setup(void)
>> {
>> fzsync_pair.min_samples = 10000;
>>
>> + tst_syscall(__NR_recvmmsg);
>
> maybe adding with useless parameters?
> tst_syscall(__NR_recvmmsg, 0 ,0, 0, 0, 0);
I'm not sure it is necessary, but it is probably safer, so I will change
it.
>
>> + if (errno == ENOSYS)
>> + tst_brk(TCONF, "recvmmsg not supported");
>
> Seems errno check is not necessary here, the macro tst_syscall() has
> already defined with tst_brk(TCONF,) calling when errno is ENOSYS.
>
> FYI:
>
> #define tst_syscall(NR, ...) ({ \\
> int tst_ret; \\
> if (NR == __LTP__NR_INVALID_SYSCALL) { \\
> errno = ENOSYS; \\
> tst_ret = -1; \\
> } else { \\
> tst_ret = syscall(NR, ##__VA_ARGS__); \\
> } \\
Ah I misread the if statement, thanks.
> if (tst_ret == -1 && errno == ENOSYS) { \\
> tst_brk(TCONF, "syscall(%d) " #NR " not supported", NR); \\
> } \\
> tst_ret; \\
> })
>
>> +
>> tst_fzsync_pair_init(&fzsync_pair);
>> }
>
>>
>> --
>> 2.19.1
>>
--
Thank you,
Richard.
More information about the ltp
mailing list