diff options
Diffstat (limited to 'pimd')
| -rw-r--r-- | pimd/pim6_mld.c | 2 | ||||
| -rw-r--r-- | pimd/pim_autorp.c | 2 | ||||
| -rw-r--r-- | pimd/pim_bsr_rpdb.c | 3 | ||||
| -rw-r--r-- | pimd/pim_zlookup.c | 2 |
4 files changed, 7 insertions, 2 deletions
diff --git a/pimd/pim6_mld.c b/pimd/pim6_mld.c index a871837701..59cd9aea5f 100644 --- a/pimd/pim6_mld.c +++ b/pimd/pim6_mld.c @@ -468,6 +468,8 @@ static void gm_sg_update(struct gm_sg *sg, bool has_expired) static void gm_packet_free(struct gm_packet_state *pkt) { + assert(pkt->iface); + gm_packet_expires_del(pkt->iface->expires, pkt); gm_packets_del(pkt->subscriber->packets, pkt); gm_subscriber_drop(&pkt->subscriber); diff --git a/pimd/pim_autorp.c b/pimd/pim_autorp.c index 35347a2790..3fc30347a6 100644 --- a/pimd/pim_autorp.c +++ b/pimd/pim_autorp.c @@ -308,7 +308,7 @@ static bool pim_autorp_discovery(struct pim_autorp *autorp, uint8_t rpcnt, struct autorp_pkt_grp *grp; size_t offset = 0; pim_addr rp_addr; - struct prefix grppfix; + struct prefix grppfix = {}; char plname[32]; struct prefix_list *pl; struct prefix_list_entry *ple; diff --git a/pimd/pim_bsr_rpdb.c b/pimd/pim_bsr_rpdb.c index 3ec9f99cd1..6e93b65f4b 100644 --- a/pimd/pim_bsr_rpdb.c +++ b/pimd/pim_bsr_rpdb.c @@ -502,6 +502,9 @@ int pim_crp_process(struct interface *ifp, pim_sgaddr *src_dst, uint8_t *buf, buf += sizeof(*crp_hdr); remain -= sizeof(*crp_hdr); + /* ignore trailing data */ + (void)buf; + size_t ngroups = crp_hdr->prefix_cnt; if (remain < ngroups * sizeof(struct pim_encoded_group_ipv4)) { diff --git a/pimd/pim_zlookup.c b/pimd/pim_zlookup.c index c19119fa47..5d344f1f66 100644 --- a/pimd/pim_zlookup.c +++ b/pimd/pim_zlookup.c @@ -193,7 +193,7 @@ static int zclient_read_nexthop(struct pim_instance *pim, distance = stream_getc(s); metric = stream_getl(s); - nexthop_num = stream_getc(s); + nexthop_num = stream_getw(s); if (nexthop_num < 1 || nexthop_num > router->multipath) { if (PIM_DEBUG_PIM_NHT_DETAIL) |
