summaryrefslogtreecommitdiff
path: root/lib/northbound_oper.c
diff options
context:
space:
mode:
authorChristian Hopps <chopps@labn.net>2024-01-09 21:52:41 +0000
committerChristian Hopps <chopps@labn.net>2024-01-09 21:52:41 +0000
commit5519c0fbe6d01b108ee09c82079f6a228cb0d23f (patch)
tree9d779225ebadd741caf790de53dc7c1a3ba4b3c9 /lib/northbound_oper.c
parentea9d2b82c7f3dbd91b08df629fa5b2366f014f9a (diff)
lib: fix oper-state memleak
Fix memleak when a key-ed query was done for which the key didn't exist. Signed-off-by: Christian Hopps <chopps@labn.net>
Diffstat (limited to 'lib/northbound_oper.c')
-rw-r--r--lib/northbound_oper.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/northbound_oper.c b/lib/northbound_oper.c
index 334370d0ab..27e37abd04 100644
--- a/lib/northbound_oper.c
+++ b/lib/northbound_oper.c
@@ -477,7 +477,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;
@@ -547,6 +547,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;
}