Skip to content

Commit

Permalink
MPLS: Fix pointer manipulation when forming netlink nested attributes
Browse files Browse the repository at this point in the history
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
Reviewed-by:   Donald Sharp <sharpd@cumulusnetworks.com>
Fixes: f128f2f1f8a2fa975063dd321719607693991eb0

Ticket: CM-10506
Reviewed By: CCR-4536
Testing Done: Manual verification
  • Loading branch information
vivek-cumulus authored and donaldsharp committed Sep 23, 2016
1 parent c0f4be8 commit 27559eb
Showing 1 changed file with 12 additions and 2 deletions.
14 changes: 12 additions & 2 deletions zebra/rt_netlink.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,16 @@ static const struct message nlmsg_str[] = {
#endif
/* End of temporary definitions */

#ifndef NLMSG_TAIL
#define NLMSG_TAIL(nmsg) \
((struct rtattr *) (((u_char *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
#endif

#ifndef RTA_TAIL
#define RTA_TAIL(rta) \
((struct rtattr *) (((u_char *) (rta)) + RTA_ALIGN((rta)->rta_len)))
#endif

struct gw_family_t
{
u_int16_t filler;
Expand Down Expand Up @@ -1749,7 +1759,7 @@ addattr_nest(struct nlmsghdr *n, int maxlen, int type)
static int
addattr_nest_end(struct nlmsghdr *n, struct rtattr *nest)
{
nest->rta_len = NLMSG_TAIL(n) - nest;
nest->rta_len = (u_char *)NLMSG_TAIL(n) - (u_char *)nest;
return n->nlmsg_len;
}

Expand All @@ -1765,7 +1775,7 @@ rta_nest(struct rtattr *rta, int maxlen, int type)
static int
rta_nest_end(struct rtattr *rta, struct rtattr *nest)
{
nest->rta_len = RTA_TAIL(rta) - nest;
nest->rta_len = (u_char *)RTA_TAIL(rta) - (u_char *)nest;
return rta->rta_len;
}

Expand Down

0 comments on commit 27559eb

Please sign in to comment.