uci: fix session delta isolation

The libuci `uci_set_savedir()` function does not replace, but appends the
requested delta directory to the search path, this causes information leaks
between sessions.

Due to a lack of an official api for this, clear the uci contexts private
delta path before setting the save directory.

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2018-03-15 11:46:54 +01:00
parent cfe1e75c91
commit 6994c87a42

7
uci.c
View file

@ -210,8 +210,15 @@ rpc_uci_status(void)
static void
rpc_uci_set_savedir(struct blob_attr *sid)
{
struct uci_element *e, *tmp;
char path[PATH_MAX];
uci_foreach_element_safe(&cursor->delta_path, tmp, e)
free(e);
cursor->delta_path.prev = &cursor->delta_path;
cursor->delta_path.next = &cursor->delta_path;
if (!sid)
{
uci_set_savedir(cursor, "/tmp/.uci");