]> git.puffer.fish Git - matthieu/frr.git/commitdiff
Revert "ospfd: fix some dicey pointer arith in snmp module"
authorLouis Scalbert <louis.scalbert@6wind.com>
Tue, 23 Apr 2024 09:36:14 +0000 (11:36 +0200)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Wed, 24 Apr 2024 11:26:46 +0000 (11:26 +0000)
This reverts commit 438ef98701e9922e81a451f87ad053268a1a557e.

The previous code was correct even if the coverity scanner was
complaining.

Fixes: https://github.com/FRRouting/frr/issues/15680
Signed-off-by: Louis Scalbert <louis.scalbert@6wind.com>
(cherry picked from commit c7895ba3202db2d99a3d9b688dc15424b8df35bd)

ospfd/ospf_snmp.c

index c9aaa9f978919bd2d57209af777090fe000254ff..fcc43e7311c2bae2ac7522bfa4ff91522543bfab 100644 (file)
@@ -906,7 +906,7 @@ static struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,
                area = ospf_area_lookup_by_area_id(ospf, *area_id);
                if (!area)
                        return NULL;
-               offset++;
+               offset += IN_ADDR_SIZE;
 
                /* Type. */
                *type = *offset;
@@ -914,7 +914,7 @@ static struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,
 
                /* LS ID. */
                oid2in_addr(offset, IN_ADDR_SIZE, ls_id);
-               offset++;
+               offset += IN_ADDR_SIZE;
 
                /* Router ID. */
                oid2in_addr(offset, IN_ADDR_SIZE, router_id);
@@ -971,7 +971,7 @@ static struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,
                        }
 
                        /* Router ID. */
-                       offset++;
+                       offset += IN_ADDR_SIZE;
                        offsetlen -= IN_ADDR_SIZE;
                        len = offsetlen;
 
@@ -996,11 +996,11 @@ static struct ospf_lsa *ospfLsdbLookup(struct variable *v, oid *name,
                                /* Fill in value. */
                                offset = name + v->namelen;
                                oid_copy_in_addr(offset, area_id);
-                               offset++;
+                               offset += IN_ADDR_SIZE;
                                *offset = lsa->data->type;
                                offset++;
                                oid_copy_in_addr(offset, &lsa->data->id);
-                               offset++;
+                               offset += IN_ADDR_SIZE;
                                oid_copy_in_addr(offset,
                                                 &lsa->data->adv_router);
 
@@ -1106,7 +1106,7 @@ static struct ospf_area_range *ospfAreaRangeLookup(struct variable *v,
                if (!area)
                        return NULL;
 
-               offset++;
+               offset += IN_ADDR_SIZE;
 
                /* Lookup area range. */
                oid2in_addr(offset, IN_ADDR_SIZE, range_net);
@@ -1135,7 +1135,7 @@ static struct ospf_area_range *ospfAreaRangeLookup(struct variable *v,
                        return NULL;
 
                do {
-                       offset++;
+                       offset += IN_ADDR_SIZE;
                        offsetlen -= IN_ADDR_SIZE;
                        len = offsetlen;
 
@@ -1157,7 +1157,7 @@ static struct ospf_area_range *ospfAreaRangeLookup(struct variable *v,
                                /* Fill in value. */
                                offset = name + v->namelen;
                                oid_copy_in_addr(offset, area_id);
-                               offset++;
+                               offset += IN_ADDR_SIZE;
                                oid_copy_in_addr(offset, range_net);
 
                                return range;
@@ -1560,7 +1560,7 @@ static struct ospf_interface *ospfIfLookup(struct variable *v, oid *name,
                        *length = v->namelen + IN_ADDR_SIZE + 1;
                        offset = name + v->namelen;
                        oid_copy_in_addr(offset, ifaddr);
-                       offset++;
+                       offset += IN_ADDR_SIZE;
                        *offset = *ifindex;
                        return oi;
                }
@@ -1704,7 +1704,7 @@ static struct ospf_interface *ospfIfMetricLookup(struct variable *v, oid *name,
                        *length = v->namelen + IN_ADDR_SIZE + 1 + 1;
                        offset = name + v->namelen;
                        oid_copy_in_addr(offset, ifaddr);
-                       offset++;
+                       offset += IN_ADDR_SIZE;
                        *offset = *ifindex;
                        offset++;
                        *offset = OSPF_SNMP_METRIC_VALUE;
@@ -2242,7 +2242,7 @@ static struct ospf_lsa *ospfExtLsdbLookup(struct variable *v, oid *name,
 
                /* LS ID. */
                oid2in_addr(offset, IN_ADDR_SIZE, ls_id);
-               offset++;
+               offset += IN_ADDR_SIZE;
 
                /* Router ID. */
                oid2in_addr(offset, IN_ADDR_SIZE, router_id);
@@ -2270,7 +2270,7 @@ static struct ospf_lsa *ospfExtLsdbLookup(struct variable *v, oid *name,
 
                oid2in_addr(offset, len, ls_id);
 
-               offset++;
+               offset += IN_ADDR_SIZE;
                offsetlen -= IN_ADDR_SIZE;
 
                /* Router ID. */
@@ -2293,7 +2293,7 @@ static struct ospf_lsa *ospfExtLsdbLookup(struct variable *v, oid *name,
                        *offset = OSPF_AS_EXTERNAL_LSA;
                        offset++;
                        oid_copy_in_addr(offset, &lsa->data->id);
-                       offset++;
+                       offset += IN_ADDR_SIZE;
                        oid_copy_in_addr(offset, &lsa->data->adv_router);
 
                        return lsa;