]> git.puffer.fish Git - matthieu/frr.git/commitdiff
zebra: Fix NULL pointer dereference
authorCarmine Scarpitta <cscarpit@cisco.com>
Fri, 21 Jun 2024 15:47:46 +0000 (17:47 +0200)
committerCarmine Scarpitta <cscarpit@cisco.com>
Mon, 24 Jun 2024 08:44:14 +0000 (10:44 +0200)
The `locator` pointer is dereferenced before ensuring it is not NULL.
Fix the issue by checking that the pointer is not NULL before
dereferencing it.

Fixes 1594013

** CID 1594013:  Null pointer dereferences  (REVERSE_INULL)
/zebra/zebra_srv6.c: 961 in zebra_srv6_sid_compose()

________________________________________________________________________________________________________
*** CID 1594013:  Null pointer dereferences  (REVERSE_INULL)
/zebra/zebra_srv6.c: 961 in zebra_srv6_sid_compose()
955         struct srv6_locator *locator,
956         uint32_t sid_func)
957     {
958      uint8_t offset, func_len;
959      struct srv6_sid_format *format = locator->sid_format;
960
     CID 1594013:  Null pointer dereferences  (REVERSE_INULL)
     Null-checking "locator" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
961      if (!sid_value || !locator)
962      return false;
963
964      if (format) {
965      offset = format->block_len + format->node_len;
966      func_len = format->function_len;

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

index be335a5dedf278783400ff92ad667c19a8121d22..e82b781c6fea9919775aa8e7eabc5b897d8e69b0 100644 (file)
@@ -956,11 +956,12 @@ static bool zebra_srv6_sid_compose(struct in6_addr *sid_value,
                                   uint32_t sid_func)
 {
        uint8_t offset, func_len;
-       struct srv6_sid_format *format = locator->sid_format;
+       struct srv6_sid_format *format;
 
        if (!sid_value || !locator)
                return false;
 
+       format = locator->sid_format;
        if (format) {
                offset = format->block_len + format->node_len;
                func_len = format->function_len;