]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: fix crash on processing own p2p hello
authorAmritha Nambiar <amritha.nambiar@intel.com>
Thu, 23 Apr 2015 22:36:55 +0000 (15:36 -0700)
committerDaniel Walton <dwalton@cumulusnetworks.com>
Thu, 26 May 2016 15:33:30 +0000 (15:33 +0000)
isis_pdu.c :
isisd crashes if router's own p2p hello packets get processed
thereby creating an adjacecncy with itself. Asserts at
isis_find_vertex. So discard own p2p IIH PDU and avoid
creating adjacency with self. This would also fix duplicate
systemID on an interface. These checks already exists for IS-IS
LAN Level 1/2 Hello PDU in process_lan_hello, but not for
point-to-point IIH PDUs.

Signed-off-by: Amritha Nambiar <amritha.nambiar@intel.com>
Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
(cherry picked from commit 491417ac6383e2ea557951b24eb7bd3fffb69394)

isisd/isis_pdu.c

index a4fe65af457c6741631f50b6f63232cd88412ee1..d0b67501bab0a12968d29a8506bf590813ca32a4 100644 (file)
@@ -561,6 +561,17 @@ process_p2p_hello (struct isis_circuit *circuit)
       return ISIS_WARNING;
     }
 
+  /*
+   * it's own p2p IIH PDU - discard
+   */
+  if (!memcmp (hdr->source_id, isis->sysid, ISIS_SYS_ID_LEN))
+    {
+      zlog_warn ("ISIS-Adj (%s): it's own IIH PDU - discarded",
+                  circuit->area->area_tag);
+      free_tlvs (&tlvs);
+      return ISIS_WARNING;
+    }
+
   /*
    * My interpertation of the ISO, if no adj exists we will create one for
    * the circuit