summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Burke <tim.burke@gmail.com>2016-12-06 03:38:27 +0000
committerKota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp>2016-12-05 22:11:23 -0800
commit288d1e07de0f3b525ea7ae5b7c7fd67d6187756f (patch)
tree0e435e2b8442f2be8b1ff95e0c2f1f22007af27a
parentebaffcdfc14ba8d2aea2e39100d0e1e53d40aefa (diff)
downloadpyeclib-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.c1
-rw-r--r--test/test_pyeclib_api.py2
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]