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