summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDonatas Abraitis <donatas@opensourcerouting.org>2024-01-10 12:16:37 +0200
committerGitHub <noreply@github.com>2024-01-10 12:16:37 +0200
commit4c875482a5097288a0fa20fc91c079c93e98c0d3 (patch)
treee30705a18073f36158f1f0559787d7cf43393311
parent22b439090cdef4525cae767e80d6898a3de5c6e4 (diff)
parent5519c0fbe6d01b108ee09c82079f6a228cb0d23f (diff)
Merge pull request #15123 from LabNConsulting/chopps/fix-oper-state-memleak
lib: fix oper-state memleak
-rw-r--r--lib/northbound_oper.c4
-rw-r--r--tests/topotests/mgmt_oper/test_simple.py10
2 files changed, 8 insertions, 6 deletions
diff --git a/lib/northbound_oper.c b/lib/northbound_oper.c
index 78106e4e45..b5201c6306 100644
--- a/lib/northbound_oper.c
+++ b/lib/northbound_oper.c
@@ -480,7 +480,7 @@ static enum nb_error nb_op_ys_init_node_infos(struct nb_op_yield_state *ys)
{
struct nb_op_node_info *ni;
struct lyd_node_inner *inner;
- struct lyd_node *node;
+ struct lyd_node *node = NULL;
enum nb_error ret;
uint i, len;
char *tmp;
@@ -550,6 +550,8 @@ static enum nb_error nb_op_ys_init_node_infos(struct nb_op_yield_state *ys)
darr_foreach_i (ys->node_infos, i) {
ret = nb_op_ys_finalize_node_info(ys, i);
if (ret != NB_OK) {
+ if (ys->node_infos[0].inner)
+ lyd_free_all(&ys->node_infos[0].inner->node);
darr_free(ys->node_infos);
return ret;
}
diff --git a/tests/topotests/mgmt_oper/test_simple.py b/tests/topotests/mgmt_oper/test_simple.py
index 32988e77dc..008733ee72 100644
--- a/tests/topotests/mgmt_oper/test_simple.py
+++ b/tests/topotests/mgmt_oper/test_simple.py
@@ -92,18 +92,18 @@ def test_oper_simple(tgen):
'rib[afi-safi-name="frr-routing:ipv4-unicast"][table-id="254"]/route',
"simple-results/result-ribs-rib-route-nokey.json",
),
- # Missing entry
(
'/frr-vrf:lib/vrf[name="default"]/frr-zebra:zebra/ribs/'
'rib[afi-safi-name="frr-routing:ipv4-unicast"][table-id="254"]/'
- 'route[prefix="1.1.0.0/24"]',
- "simple-results/result-empty.json",
+ 'route[prefix="1.1.1.0/24"]',
+ "simple-results/result-ribs-rib-route-prefix.json",
),
+ # Missing entry
(
'/frr-vrf:lib/vrf[name="default"]/frr-zebra:zebra/ribs/'
'rib[afi-safi-name="frr-routing:ipv4-unicast"][table-id="254"]/'
- 'route[prefix="1.1.1.0/24"]',
- "simple-results/result-ribs-rib-route-prefix.json",
+ 'route[prefix="1.1.0.0/24"]',
+ "simple-results/result-empty.json",
),
# Leaf reference
(