summaryrefslogtreecommitdiff
path: root/pimd
diff options
context:
space:
mode:
Diffstat (limited to 'pimd')
-rw-r--r--pimd/pim6_mld.c2
-rw-r--r--pimd/pim_autorp.c2
-rw-r--r--pimd/pim_bsr_rpdb.c3
-rw-r--r--pimd/pim_zlookup.c2
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)