]> git.puffer.fish Git - matthieu/frr.git/commitdiff
bgpd: fix memcmp(null, *) when parsing bgp attrs
authorQuentin Young <qlyoung@cumulusnetworks.com>
Sun, 5 Apr 2020 05:02:42 +0000 (01:02 -0400)
committerQuentin Young <qlyoung@cumulusnetworks.com>
Sun, 5 Apr 2020 05:02:42 +0000 (01:02 -0400)
My first patch for this only fixed the memcmp(NULL, NULL) case.

Signed-off-by: Quentin Young <qlyoung@cumulusnetworks.com>
bgpd/bgp_attr.c

index 221386e38de8fbc58568f1a698f88d11640a7e2a..8cb7a07f424f5a99b34605fed7f88db5e60c3960 100644 (file)
@@ -152,10 +152,16 @@ static bool cluster_hash_cmp(const void *p1, const void *p2)
        const struct cluster_list *cluster1 = p1;
        const struct cluster_list *cluster2 = p2;
 
-       return (cluster1->length == cluster2->length
-               && (cluster1->list == cluster2->list
-                   || memcmp(cluster1->list, cluster2->list, cluster1->length)
-                              == 0));
+       if (cluster1->list == cluster2->list)
+               return true;
+
+       if (!cluster1->list || !cluster2->list)
+               return false;
+
+       if (cluster1->length != cluster2->length)
+               return false;
+
+       return (memcmp(cluster1->list, cluster2->list, cluster1->length) == 0);
 }
 
 static void cluster_free(struct cluster_list *cluster)