[prev in list] [next in list] [prev in thread] [next in thread] 

List:       musl
Subject:    [musl] Mistake in RTA_OK macro
From:       Ondřej Jirman <megi () xff ! cz>
Date:       2018-11-20 23:29:50
Message-ID: 20181120232950.belzgih65diux3qt () core ! my ! home
[Download RAW message or body]

Hello,

This line:

grep -R RTA_OK

src/network/netlink.h:#define RTA_OK(nlh,end)		((char*)(end)-(char*)(rta) >= \
sizeof(struct rtattr))

only works by accident, because all uses of NLMSG_RTAOK reference rta variable:

src/network/getifaddrs.c:		for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, \
                h); rta = RTA_NEXT(rta)) {
src/network/getifaddrs.c:		for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, \
                h); rta = RTA_NEXT(rta)) {
src/network/getifaddrs.c:		for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, \
h); rta = RTA_NEXT(rta)) { src/network/netlink.h:#define \
                NLMSG_RTAOK(rta,nlh)	RTA_OK(rta,NLMSG_DATAEND(nlh))
src/network/if_nameindex.c:	for (; NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {

I suggest:

-#define RTA_OK(nlh,end)		((char*)(end)-(char*)(rta) >= sizeof(struct rtattr))
+#define RTA_OK(rta,end)		((char*)(end)-(char*)(rta) >= sizeof(struct rtattr))

thank you and regards,
  o.


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic