diff options
author | Tim Burke <tim.burke@gmail.com> | 2016-12-06 03:38:27 +0000 |
---|---|---|
committer | Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp> | 2016-12-05 22:11:23 -0800 |
commit | 288d1e07de0f3b525ea7ae5b7c7fd67d6187756f (patch) | |
tree | 0e435e2b8442f2be8b1ff95e0c2f1f22007af27a | |
parent | ebaffcdfc14ba8d2aea2e39100d0e1e53d40aefa (diff) | |
download | pyeclib-288d1e07de0f3b525ea7ae5b7c7fd67d6187756f.tar.gz |
Fix checksum memory leak
Since we allocate the result buffer in hex_encode_string, we're
responsible for freeing it later.
Why didn't we catch it before? Turns out, our tests didn't
loop enough. I wasn't reliably seeing a test failure at 200k
iterations, but 400k seems to be enough?
Closes-Bug: #1634006
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Related-Change: I678e10008c3c5bc04640f7f19498334d94cb0cd6
Change-Id: I0f6e922ba25ad56142f3d095896b9856a436a81c
-rw-r--r-- | src/c/pyeclib_c/pyeclib_c.c | 1 | ||||
-rw-r--r-- | test/test_pyeclib_api.py | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/src/c/pyeclib_c/pyeclib_c.c b/src/c/pyeclib_c/pyeclib_c.c index 8e1a23c..7f91555 100644 --- a/src/c/pyeclib_c/pyeclib_c.c +++ b/src/c/pyeclib_c/pyeclib_c.c @@ -1044,6 +1044,7 @@ fragment_metadata_to_dict(fragment_metadata_t *fragment_metadata) "chksum_mismatch", fragment_metadata->chksum_mismatch, "backend_id", backend_id_str, "backend_version", fragment_metadata->backend_version); + encoded_chksum = check_and_free_buffer(encoded_chksum); if (metadata_dict == NULL) { pyeclib_c_seterr(-ENOMEM, "fragment_metadata_to_dict ERROR: "); return NULL; diff --git a/test/test_pyeclib_api.py b/test/test_pyeclib_api.py index b008894..64cdadf 100644 --- a/test/test_pyeclib_api.py +++ b/test/test_pyeclib_api.py @@ -692,7 +692,7 @@ class TestPyECLibDriver(unittest.TestCase): # 1. Prepare the expected memory allocation encoded = ec_driver.encode(b'aaa') ec_driver.get_metadata(encoded[0], formatted=True) - loop_range = range(1000) + loop_range = range(400000) # 2. Get current memory usage baseline_usage = resource.getrusage(resource.RUSAGE_SELF)[2] |