Skip to content
Snippets Groups Projects
Commit 7f15e4f0 authored by Erik Karlsson's avatar Erik Karlsson Committed by Sukru Senli
Browse files

session: initialise uci_granular in rpc_session_new

It is necessary to call rpc_uci_granular_init for every new session
that is created. Failure to do so leaves the granular_configs AVL tree
uninitialised and results in NULL pointer dereference if any
uci_granular function is called on the session. Call to
rpc_uci_granular_init is therefore moved to rpc_session_new so it will
always happen. This resolves issues with NULL pointer dereference when
sessions are accessed after rpcd has been reloaded and the session has
been restored from /var/run/rpcd/sessions/ by rpc_session_thaw.
parent 52d280b2
Branches
No related tags found
No related merge requests found
...@@ -312,6 +312,7 @@ rpc_session_new(void) ...@@ -312,6 +312,7 @@ rpc_session_new(void)
avl_init(&ses->acls, avl_strcmp, true, NULL); avl_init(&ses->acls, avl_strcmp, true, NULL);
avl_init(&ses->data, avl_strcmp, false, NULL); avl_init(&ses->data, avl_strcmp, false, NULL);
rpc_uci_granular_init(ses);
ses->t.cb = rpc_session_timeout; ses->t.cb = rpc_session_timeout;
...@@ -1259,7 +1260,6 @@ rpc_handle_login(struct ubus_context *ctx, struct ubus_object *obj, ...@@ -1259,7 +1260,6 @@ rpc_handle_login(struct ubus_context *ctx, struct ubus_object *obj,
goto out; goto out;
} }
rpc_uci_granular_init(ses);
rpc_login_setup_acls(ses, login); rpc_login_setup_acls(ses, login);
rpc_session_set(ses, tb[RPC_L_USERNAME]); rpc_session_set(ses, tb[RPC_L_USERNAME]);
...@@ -1419,7 +1419,6 @@ void rpc_init_default_session(void) ...@@ -1419,7 +1419,6 @@ void rpc_init_default_session(void)
strcpy(ses->id, RPC_DEFAULT_SESSION_ID); strcpy(ses->id, RPC_DEFAULT_SESSION_ID);
rpc_login_setup_acls(ses, NULL); rpc_login_setup_acls(ses, NULL);
avl_insert(&sessions, &ses->avl); avl_insert(&sessions, &ses->avl);
rpc_uci_granular_init(ses);
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment