From dc668d296f9f05aeab6315d44cff3208641e3096 Mon Sep 17 00:00:00 2001 From: Michal Vasko Date: Mon, 13 Feb 2023 10:23:13 +0100 Subject: [PATCH] schema compile UPDATE do not implement 2 same modules CVE: CVE-2023-26916 Upstream-Status: Backport [https://github.com/CESNET/libyang/commit/dc668d296f9f05aeab6315d44cff3208641e3096] Refs #1979 --- src/schema_compile.c | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/src/schema_compile.c b/src/schema_compile.c index ed768ba0..68c0d681 100644 --- a/src/schema_compile.c +++ b/src/schema_compile.c @@ -1748,7 +1748,7 @@ lys_has_compiled_import_r(struct lys_module *mod) LY_ERR lys_implement(struct lys_module *mod, const char **features, struct lys_glob_unres *unres) { - LY_ERR ret; + LY_ERR r; struct lys_module *m; assert(!mod->implemented); @@ -1757,21 +1757,15 @@ lys_implement(struct lys_module *mod, const char **features, struct lys_glob_unr m = ly_ctx_get_module_implemented(mod->ctx, mod->name); if (m) { assert(m != mod); - if (!strcmp(mod->name, "yang") && (strcmp(m->revision, mod->revision) > 0)) { - /* special case for newer internal module, continue */ - LOGVRB("Internal module \"%s@%s\" is already implemented in revision \"%s\", using it instead.", - mod->name, mod->revision ? mod->revision : "", m->revision ? m->revision : ""); - } else { - LOGERR(mod->ctx, LY_EDENIED, "Module \"%s@%s\" is already implemented in revision \"%s\".", - mod->name, mod->revision ? mod->revision : "", m->revision ? m->revision : ""); - return LY_EDENIED; - } + LOGERR(mod->ctx, LY_EDENIED, "Module \"%s@%s\" is already implemented in revision \"%s\".", + mod->name, mod->revision ? mod->revision : "", m->revision ? m->revision : ""); + return LY_EDENIED; } /* set features */ - ret = lys_set_features(mod->parsed, features); - if (ret && (ret != LY_EEXIST)) { - return ret; + r = lys_set_features(mod->parsed, features); + if (r && (r != LY_EEXIST)) { + return r; } /* -- 2.34.1