]> git.proxmox.com Git - mirror_frr.git/blobdiff - eigrpd/eigrp_siaquery.c
eigrpd: Fix memory leak in FSM
[mirror_frr.git] / eigrpd / eigrp_siaquery.c
index 30f65ee87dace2dfef4cf8d85b6d88c7af3bf4c6..85b6ca9fe4850de2e662b6139b883870e8f6fd5e 100644 (file)
@@ -94,22 +94,19 @@ void eigrp_siaquery_receive(struct eigrp *eigrp, struct ip *iph,
                        /* If the destination exists (it should, but one never
                         * know)*/
                        if (dest != NULL) {
-                               struct eigrp_fsm_action_message *msg;
-                               msg = XCALLOC(MTYPE_EIGRP_FSM_MSG,
-                                             sizeof(struct
-                                                    eigrp_fsm_action_message));
+                               struct eigrp_fsm_action_message msg;
                                struct eigrp_neighbor_entry *entry =
                                        eigrp_prefix_entry_lookup(dest->entries,
                                                                  nbr);
-                               msg->packet_type = EIGRP_OPC_SIAQUERY;
-                               msg->eigrp = eigrp;
-                               msg->data_type = EIGRP_TLV_IPv4_INT;
-                               msg->adv_router = nbr;
-                               msg->data.ipv4_int_type = tlv;
-                               msg->entry = entry;
-                               msg->prefix = dest;
-                               int event = eigrp_get_fsm_event(msg);
-                               eigrp_fsm_event(msg, event);
+                               msg.packet_type = EIGRP_OPC_SIAQUERY;
+                               msg.eigrp = eigrp;
+                               msg.data_type = EIGRP_TLV_IPv4_INT;
+                               msg.adv_router = nbr;
+                               msg.data.ipv4_int_type = tlv;
+                               msg.entry = entry;
+                               msg.prefix = dest;
+                               int event = eigrp_get_fsm_event(&msg);
+                               eigrp_fsm_event(&msg, event);
                        }
                        eigrp_IPv4_InternalTLV_free(tlv);
                }