]> git.puffer.fish Git - mirror/frr.git/commitdiff
isisd: Fix CID 1568132 (Null pointer dereference)
authorCarmine Scarpitta <cscarpit@cisco.com>
Fri, 15 Sep 2023 10:25:50 +0000 (12:25 +0200)
committerCarmine Scarpitta <cscarpit@cisco.com>
Fri, 15 Sep 2023 15:42:04 +0000 (17:42 +0200)
Null checking the `sra` pointer after dereferencing it causes a
coverity issue. Let's perform the null check before dereferencing the
pointer.

Fixes this coverity issue:

*** CID 1568132:  Null pointer dereferences  (REVERSE_INULL)
/isisd/isis_zebra.c: 1023 in isis_zebra_srv6_adj_sid_install()
1017            struct seg6local_context ctx = {};
1018            uint16_t prefixlen = IPV6_MAX_BITLEN;
1019            struct interface *ifp;
1020            struct isis_circuit *circuit = sra->adj->circuit;
1021            struct isis_area *area = circuit->area;
1022
>>>     CID 1568132:  Null pointer dereferences  (REVERSE_INULL)
>>>     Null-checking "sra" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
1023            if (!sra)
1024                    return;
1025
1026            sr_debug("ISIS-SRv6 (%s): setting adjacency SID %pI6", area->area_tag,
1027                     &sra->sid);
1028

Signed-off-by: Carmine Scarpitta <cscarpit@cisco.com>
isisd/isis_zebra.c

index ada8f1ad297bc911f9e5d1568c154556aedd7b2a..6b9507136ac285b1f0505b76ea5016233a14c87f 100644 (file)
@@ -1017,12 +1017,15 @@ void isis_zebra_srv6_adj_sid_install(struct srv6_adjacency *sra)
        struct seg6local_context ctx = {};
        uint16_t prefixlen = IPV6_MAX_BITLEN;
        struct interface *ifp;
-       struct isis_circuit *circuit = sra->adj->circuit;
-       struct isis_area *area = circuit->area;
+       struct isis_circuit *circuit;
+       struct isis_area *area;
 
        if (!sra)
                return;
 
+       circuit = sra->adj->circuit;
+       area = circuit->area;
+
        sr_debug("ISIS-SRv6 (%s): setting adjacency SID %pI6", area->area_tag,
                 &sra->sid);