]> git.puffer.fish Git - mirror/frr.git/commitdiff
bgpd: fix uninitialized result code
authorQuentin Young <qlyoung@cumulusnetworks.com>
Mon, 26 Jun 2017 15:50:35 +0000 (15:50 +0000)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Thu, 30 Nov 2017 21:18:04 +0000 (16:18 -0500)
Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
bgpd/bgp_packet.c

index 074b8313af5d1a71a8588372bd129bdbec9266c0..41f0cac6d5d55b3ffee2bd6029b46dfca4e038d4 100644 (file)
@@ -2078,6 +2078,7 @@ int bgp_process_packet(struct thread *thread)
        peer = THREAD_ARG(thread);
        rpkt_quanta_old = atomic_load_explicit(&peer->bgp->rpkt_quanta,
                                               memory_order_relaxed);
+       fsm_update_result = 0;
 
        /* Guard against scheduled events that occur after peer deletion. */
        if (peer->status == Deleted || peer->status == Clearing)
@@ -2167,6 +2168,13 @@ int bgp_process_packet(struct thread *thread)
                                        "%s: BGP CAPABILITY receipt failed for peer: %s",
                                        __FUNCTION__, peer->host);
                        break;
+               default:
+                       /* The message type should have been sanitized before we
+                        * ever got
+                        * here. Receipt of a message with an invalid header at
+                        * this point is
+                        * indicative of a security issue. */
+                       assert (!"Message of invalid type received during input processing");
                }
 
                /* delete processed packet */
@@ -2177,6 +2185,8 @@ int bgp_process_packet(struct thread *thread)
                /* Update FSM */
                if (mprc != BGP_PACKET_NOOP)
                        fsm_update_result = bgp_event_update(peer, mprc);
+               else
+                       continue;
 
                /* If peer was deleted, do not process any more packets. This is
                 * usually