[LTP] [COMMITTED] setsockopt08: includes netinet/in.h

Petr Vorel
2021-08-06T05:55:18Z

Hi Li, Cyril,

> Hi Li,

> > We have to put netinet/in.h on the top to get rid of conflict
> > of glibc and kernel headers for old unbuntu.

> > -----------
> > /usr/include/linux/in.h:28:3: error: redeclaration of enumerator 'IPPROTO_IP'
> > IPPROTO_IP = 0, /* Dummy protocol for TCP */
> > ^
> > /usr/include/netinet/in.h:42:5: note: previous definition of 'IPPROTO_IP' was here
> > IPPROTO_IP = 0, /* Dummy protocol for TCP. */
> > ...
> > -----------

> > See: https://www.mail-archive.com/netdev@vger.kernel.org/msg132711.html

> Thanks for fixing it, it's not a first time we got hit by this.
> I wonder where <linux/in.h> is included. It's not directly in setsockopt08.c,
> it must be in our lapi header. But it's not in tst_safe_net.h, not in
> safe_net_fn.h nor in tst_net.h and both actually include <netinet/in.h>, thus it must be
> before. But there is only tst_test.h.

> I'm asking because it'd be better to add <netinet/in.h> into header before
> <linux/in.h>.

OK, it's in lapi/ip_tables.h, which includes <linux/netfilter_ipv4/ip_tables.h>
which includes <linux/if.h>. But I wonder why inclusion of <netinet/in.h> from
safe_net_fn.h or in tst_net.h does not work. Anyway, I'll test including
<netinet/in.h> in include/lapi/ip_tables.h helps.

Kind regards,
Petr

> Kind regards,
> Petr

> > Fixes: ebf3a4fbd39a (Add setsockopt08, CVE-2021-22555)
> > Signed-off-by: Li Wang <liwang@redhat.com>
> > ---
> > testcases/kernel/syscalls/setsockopt/setsockopt08.c | 2 ++
> > 1 file changed, 2 insertions(+)

> > diff --git a/testcases/kernel/syscalls/setsockopt/setsockopt08.c b/testcases/kernel/syscalls/setsockopt/setsockopt08.c
> > index f758dcbdc..f7052f27b 100644
> > --- a/testcases/kernel/syscalls/setsockopt/setsockopt08.c
> > +++ b/testcases/kernel/syscalls/setsockopt/setsockopt08.c
> > @@ -79,6 +79,8 @@
> > * - sizeof(struct xt_entry_target) = 32
> > */

> > +#include <netinet/in.h>
> > +
> > #include "tst_test.h"
> > #include "tst_safe_net.h"
> > #include "lapi/ip_tables.h"