eigrpd: Fix crash in reply receive packet.

When we receive a reply for a prefix we no longer
have we should note the issue and move on instead
of crashing eigrp.

Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
Donald Sharp 2017-10-29 08:28:01 -04:00
parent 68b7dd07d5
commit b42a4a099a

View File

@ -149,7 +149,10 @@ void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph,
while (s->endp > s->getp) {
type = stream_getw(s);
if (type == EIGRP_TLV_IPv4_INT) {
if (type != EIGRP_TLV_IPv4_INT)
continue;
struct prefix dest_addr;
stream_set_getp(s, s->getp - sizeof(u_int16_t));
@ -165,7 +168,13 @@ void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph,
/*
* Destination must exists
*/
assert(dest);
if (!dest) {
char buf[PREFIX_STRLEN];
zlog_err("%s: Received prefix %s which we do not know about",
__PRETTY_FUNCTION__,
prefix2str(&dest_addr, buf, strlen(buf)));
continue;
}
struct eigrp_fsm_action_message msg;
struct eigrp_nexthop_entry *entry =
@ -189,9 +198,7 @@ void eigrp_reply_receive(struct eigrp *eigrp, struct ip *iph,
msg.prefix = dest;
eigrp_fsm_event(&msg);
eigrp_IPv4_InternalTLV_free(tlv);
}
}
eigrp_hello_send_ack(nbr);
}