]> git.puffer.fish Git - matthieu/frr.git/commitdiff
pbrd: Prevent possible NULL use
authorDonald Sharp <sharpd@nvidia.com>
Sun, 17 Jan 2021 12:48:20 +0000 (07:48 -0500)
committerDonald Sharp <sharpd@nvidia.com>
Mon, 18 Jan 2021 14:06:49 +0000 (09:06 -0500)
the pnhi data structure can receive either a interface or a
nhr data structure.  Ensure that we don't crash.

CID -> 1500586
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
pbrd/pbr_nht.c

index dbe5de724cdd37b69380bfb1a27a06f749b68fef..f99971ab7b7a4dd63dbcc93ebf24e684d6acdf7b 100644 (file)
@@ -770,18 +770,20 @@ pbr_nht_individual_nexthop_gw_update(struct pbr_nexthop_cache *pnhc,
                goto done;
        }
 
-       switch (pnhi->nhr->prefix.family) {
-       case AF_INET:
-               if (pnhc->nexthop.gate.ipv4.s_addr
-                   != pnhi->nhr->prefix.u.prefix4.s_addr)
-                       goto done; /* Unrelated change */
-               break;
-       case AF_INET6:
-               if (memcmp(&pnhc->nexthop.gate.ipv6,
-                          &pnhi->nhr->prefix.u.prefix6, 16)
-                   != 0)
-                       goto done; /* Unrelated change */
-               break;
+       if (pnhi->nhr) {
+               switch (pnhi->nhr->prefix.family) {
+               case AF_INET:
+                       if (pnhc->nexthop.gate.ipv4.s_addr
+                           != pnhi->nhr->prefix.u.prefix4.s_addr)
+                               goto done; /* Unrelated change */
+                       break;
+               case AF_INET6:
+                       if (memcmp(&pnhc->nexthop.gate.ipv6,
+                                  &pnhi->nhr->prefix.u.prefix6, 16)
+                           != 0)
+                               goto done; /* Unrelated change */
+                       break;
+               }
        }
 
        pnhi->nhr_matched = true;