From 6abf6a11e89e7fb407f9dde00a4da387992b8b68 Mon Sep 17 00:00:00 2001 From: Erik Karlsson <erik.karlsson@genexis.eu> Date: Thu, 9 Sep 2021 21:01:52 +0200 Subject: [PATCH] session: check for already loaded config in rpc_login_test_login When the rpc_session_thaw function is restoring saved sessions, rpc_login_test_login is called multiple times on the same UCI context. It needs to use uci_lookup_package in case configuration is already loaded. Otherwise, if there is more than one session to restore, only the first one will succeed and the remaining ones end up with the ACLs missing. --- session.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/session.c b/session.c index a3d470a..6f06e74 100644 --- a/session.c +++ b/session.c @@ -842,10 +842,14 @@ rpc_login_test_login(struct uci_context *uci, struct uci_element *e; struct uci_ptr ptr = { .package = "rpcd" }; - uci_load(uci, ptr.package, &p); + p = uci_lookup_package(uci, ptr.package); - if (!p) - return false; + if (!p) { + uci_load(uci, ptr.package, &p); + + if (!p) + return NULL; + } uci_foreach_element(&p->sections, e) { -- GitLab