]> git.puffer.fish Git - matthieu/frr.git/commitdiff
lib: Release memory of YANG translation module on error
authorDonatas Abraitis <donatas@opensourcerouting.org>
Thu, 9 Feb 2023 15:59:11 +0000 (17:59 +0200)
committerMergify <37929162+mergify[bot]@users.noreply.github.com>
Fri, 10 Feb 2023 00:25:59 +0000 (00:25 +0000)
Signed-off-by: Donatas Abraitis <donatas@opensourcerouting.org>
(cherry picked from commit b9941b3fec21eca413c4ca9460a264eb9afb7e34)

lib/yang_translator.c

index 67b7f9aa700e40473c2ac3cb50d60c095c0742f3..f37084f0d483fcf44307681db89404ccfd263172 100644 (file)
@@ -127,10 +127,15 @@ static void yang_mapping_add(struct yang_translator *translator, int dir,
        }
 }
 
+static void yang_tmodule_delete(struct yang_tmodule *tmodule)
+{
+       XFREE(MTYPE_YANG_TRANSLATOR_MODULE, tmodule);
+}
+
 struct yang_translator *yang_translator_load(const char *path)
 {
        struct yang_translator *translator;
-       struct yang_tmodule *tmodule;
+       struct yang_tmodule *tmodule = NULL;
        const char *family;
        struct lyd_node *dnode;
        struct ly_set *set;
@@ -282,15 +287,11 @@ struct yang_translator *yang_translator_load(const char *path)
 error:
        yang_dnode_free(dnode);
        yang_translator_unload(translator);
+       yang_tmodule_delete(tmodule);
 
        return NULL;
 }
 
-static void yang_tmodule_delete(struct yang_tmodule *tmodule)
-{
-       XFREE(MTYPE_YANG_TRANSLATOR_MODULE, tmodule);
-}
-
 void yang_translator_unload(struct yang_translator *translator)
 {
        for (size_t i = 0; i < YANG_TRANSLATE_MAX; i++)