summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPetr Štetiar <ynezz@true.cz>2019-11-04 23:08:26 +0100
committerPetr Štetiar <ynezz@true.cz>2019-11-14 17:11:34 +0100
commit39093f3b040df895da812e2932b55feeeb1201df (patch)
tree1a4e1442eddc8a22a770cd9b96d9f127b1b98aea /tests
parent19ceff323f1e2e7df26031a9fae29fff2edc65bd (diff)
downloaduci-39093f3b040df895da812e2932b55feeeb1201df.tar.gz
lua: fix memory leak in set method
scan-build from clang version 9 has reported following issue: uci.c:624:12: warning: Potential leak of memory pointed to by 's' return luaL_error(L, "Cannot set an uci option to an empty table value"); ^~~~~~~~~~ valgrind confirmed it on the supplied test case: ==31013== 8 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==31013== by 0x56C49B9: strdup (strdup.c:42) Signed-off-by: Petr Štetiar <ynezz@true.cz>
Diffstat (limited to 'tests')
-rw-r--r--tests/cram/lua/test_cases/set_with_empty_table_doesnt_leak.lua2
-rw-r--r--tests/cram/test_ucilua_testcases.t7
2 files changed, 9 insertions, 0 deletions
diff --git a/tests/cram/lua/test_cases/set_with_empty_table_doesnt_leak.lua b/tests/cram/lua/test_cases/set_with_empty_table_doesnt_leak.lua
new file mode 100644
index 0000000..83e91d3
--- /dev/null
+++ b/tests/cram/lua/test_cases/set_with_empty_table_doesnt_leak.lua
@@ -0,0 +1,2 @@
+local c = uci.cursor(os.getenv("CONFIG_DIR"))
+print(pcall(c.set, c, "network", "lan", "dns", {}))
diff --git a/tests/cram/test_ucilua_testcases.t b/tests/cram/test_ucilua_testcases.t
index 279dfce..6a0216b 100644
--- a/tests/cram/test_ucilua_testcases.t
+++ b/tests/cram/test_ucilua_testcases.t
@@ -8,3 +8,10 @@ check that changes method doesnt leak memory:
$ cp -R "$TESTDIR/config" .
$ export CONFIG_DIR=$(pwd)/config
$ ucilua $TESTDIR/lua/test_cases/changes_doesnt_leak.lua
+
+check that set method with empty table value doesn't leak memory:
+
+ $ cp -R "$TESTDIR/config" .
+ $ export CONFIG_DIR=$(pwd)/config
+ $ ucilua $TESTDIR/lua/test_cases/set_with_empty_table_doesnt_leak.lua
+ false\tCannot set an uci option to an empty table value (esc)