aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Simons <jon@jonsimons.org>2017-08-17 09:26:21 +0200
committerAndreas Schneider <asn@cryptomilk.org>2017-08-17 09:33:13 +0200
commita4dc74064c89160739c39dbfb712784fa6df8f84 (patch)
tree05e159c48b983862b988acccd24bce7e148cd6dc
parentfa86229673bce9dd89fcc95c26896b8878905038 (diff)
downloadlibssh-a4dc74064c89160739c39dbfb712784fa6df8f84.tar.gz
libssh-a4dc74064c89160739c39dbfb712784fa6df8f84.tar.xz
libssh-a4dc74064c89160739c39dbfb712784fa6df8f84.zip
tests: plug leak in torture_bind_options_import_key
Summary: Hello, this is a resend for a quick memory leak fix for one of the unit tests, originally sent to the mailing list here: * https://www.libssh.org/archive/libssh/2017-07/0000017.html Test Plan: * Before the fix and running the test with valgrind: ``` [simonsj@simonsj-lx5 : unittests] valgrind --leak-check=full ./torture_options >/dev/null ==93134== Memcheck, a memory error detector ==93134== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==93134== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info ==93134== Command: ./torture_options ==93134== [ PASSED ] 10 test(s). [ PASSED ] 1 test(s). ==93134== ==93134== HEAP SUMMARY: ==93134== in use at exit: 80 bytes in 1 blocks ==93134== total heap usage: 977 allocs, 976 frees, 75,029 bytes allocated ==93134== ==93134== 80 bytes in 1 blocks are definitely lost in loss record 1 of 1 ==93134== at 0x4C28C20: malloc (vg_replace_malloc.c:296) ==93134== by 0x41BAB0: ssh_key_new (pki.c:107) ==93134== by 0x40DF90: torture_bind_options_import_key (torture_options.c:222) ==93134== by 0x4E3AA3A: cmocka_run_one_test_or_fixture (cmocka.c:2304) ==93134== by 0x4E3ACEA: cmocka_run_one_tests (cmocka.c:2412) ==93134== by 0x4E3B036: _cmocka_run_group_tests (cmocka.c:2517) ==93134== by 0x40E9E3: torture_run_tests (torture_options.c:276) ==93134== by 0x40DE68: main (torture.c:1100) ==93134== ==93134== LEAK SUMMARY: ==93134== definitely lost: 80 bytes in 1 blocks ==93134== indirectly lost: 0 bytes in 0 blocks ==93134== possibly lost: 0 bytes in 0 blocks ==93134== still reachable: 0 bytes in 0 blocks ==93134== suppressed: 0 bytes in 0 blocks ==93134== ==93134== For counts of detected and suppressed errors, rerun with: -v ==93134== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0) ``` * And after: ``` [simonsj@simonsj-lx5 : unittests] valgrind --leak-check=full ./torture_options >/dev/null ==93294== Memcheck, a memory error detector ==93294== Copyright (C) 2002-2013, and GNU GPL'd, by Julian Seward et al. ==93294== Using Valgrind-3.10.0 and LibVEX; rerun with -h for copyright info ==93294== Command: ./torture_options ==93294== [ PASSED ] 10 test(s). [ PASSED ] 1 test(s). ==93294== ==93294== HEAP SUMMARY: ==93294== in use at exit: 0 bytes in 0 blocks ==93294== total heap usage: 977 allocs, 977 frees, 75,029 bytes allocated ==93294== ==93294== All heap blocks were freed -- no leaks are possible ==93294== ==93294== For counts of detected and suppressed errors, rerun with: -v ==93294== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) ``` Reviewers: asn Reviewed By: asn Differential Revision: https://bugs.libssh.org/D3
-rw-r--r--tests/unittests/torture_options.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/tests/unittests/torture_options.c b/tests/unittests/torture_options.c
index ca85ec23..ba2fad5f 100644
--- a/tests/unittests/torture_options.c
+++ b/tests/unittests/torture_options.c
@@ -219,8 +219,8 @@ static void torture_bind_options_import_key(void **state)
{
ssh_bind bind = *state;
int rc;
- ssh_key key = ssh_key_new();
const char *base64_key;
+ ssh_key key = ssh_key_new();
/* set null */
rc = ssh_bind_options_set(bind, SSH_BIND_OPTIONS_IMPORT_KEY, NULL);
@@ -228,6 +228,7 @@ static void torture_bind_options_import_key(void **state)
/* set invalid key */
rc = ssh_bind_options_set(bind, SSH_BIND_OPTIONS_IMPORT_KEY, key);
assert_int_equal(rc, -1);
+ ssh_key_free(key);
/* set rsa key */
base64_key = torture_get_testkey(SSH_KEYTYPE_RSA, 0, 0);