The following series is more or less a v2 of my previous single patch adding nft_ctx_free() calls to cli.c, following a different path: Eliminate any program exit points from cli.c so nft context deinit at end of main() happens. This is nicer design as said function allocates the context in the first place. Patch 1 is minor cleanup, patch 2 updates main() to free the context in all cases, too and patch 3 then changes CLI code as described above. Patch 4 extends shell testsuite by a '-V' (valgrind) mode as present in iptables' shell testsuite already which wraps all calls to $NFT by valgrind and collects non-empty logs. Sadly, I could not eliminate all valgrind complaints because each of the three CLI backends leaves allocated memory in place at exit. None seem to have sufficient deinit functions, except linenoise - but that code runs only for terminals put in raw mode. Phil Sutter (4): main: Make 'buf' variable branch-local main: Call nft_ctx_free() before exiting cli: Make cli_init() return to caller tests: shell: Introduce valgrind mode include/cli.h | 2 +- src/cli.c | 63 ++++++++++++++++++++++++++-------------- src/main.c | 42 +++++++++++++++------------ tests/shell/run-tests.sh | 47 ++++++++++++++++++++++++++++++ 4 files changed, 113 insertions(+), 41 deletions(-) -- 2.40.0