diff options
author | Jo-Philipp Wich <jo@mein.io> | 2018-05-13 21:13:05 +0200 |
---|---|---|
committer | Jo-Philipp Wich <jo@mein.io> | 2018-05-13 21:13:05 +0200 |
commit | 820621952d537c49deba470c6f61c40df93f4ba8 (patch) | |
tree | 884c6f3f782202600e1d0adb0e2b1ffc722bf2f3 | |
parent | 10f787881da2dc6aac261a2ee3b5eedc0f8b5b54 (diff) | |
download | rpcd-820621952d537c49deba470c6f61c40df93f4ba8.tar.gz |
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>
-rw-r--r-- | uci.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -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; |