uci: fix memory leak in rpc_uci_replace_savedir()
The rpc_uci_replace_savedir() function did not take into account that libuci uci_set_savedir() does an additional implicit uci_strdup() of the directory path string when appending a new delta directory item. Due to this oversight, only the struct uci_element items got freed, but not the duplicated path string, leading to leaking memory when invoking the uci api with session id argument. Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
parent
10f787881d
commit
820621952d
1 changed files with 5 additions and 1 deletions
6
uci.c
6
uci.c
|
@ -212,8 +212,12 @@ rpc_uci_replace_savedir(const char *path)
|
|||
{
|
||||
struct uci_element *e, *tmp;
|
||||
|
||||
uci_foreach_element_safe(&cursor->delta_path, tmp, e)
|
||||
uci_foreach_element_safe(&cursor->delta_path, tmp, e) {
|
||||
if (e->name)
|
||||
free(e->name);
|
||||
|
||||
free(e);
|
||||
}
|
||||
|
||||
cursor->delta_path.prev = &cursor->delta_path;
|
||||
cursor->delta_path.next = &cursor->delta_path;
|
||||
|
|
Loading…
Add table
Reference in a new issue