From c1eb3e6e6cb5b2557de11beac1253dda37f07e76 Mon Sep 17 00:00:00 2001 From: Kota Tsuyuzaki Date: Fri, 9 Jan 2015 10:15:58 -0800 Subject: Fix free fragments memories at a backend error When failing at calling a backend encode (i.e. the backend return a minus value), invalid pointer error will occur at liberasurecode_encode_cleanup() because it will work to free the memory from data[i] behind the fragment header. This patch fixes it to use free_fragment_buffer to free whole memory includes the fragment header field. TODO: Add tests (or stub backend) to verify liberasurecode behaviors when a failure returnd from the backend. --- src/erasurecode.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/erasurecode.c b/src/erasurecode.c index ad29673..64381e7 100644 --- a/src/erasurecode.c +++ b/src/erasurecode.c @@ -341,7 +341,7 @@ int liberasurecode_encode_cleanup(int desc, if (encoded_data) { for (i = 0; i < k; i++) { - free(encoded_data[i]); + free_fragment_buffer(encoded_data[i]); } free(encoded_data); @@ -349,7 +349,7 @@ int liberasurecode_encode_cleanup(int desc, if (encoded_parity) { for (i = 0; i < m; i++) { - free(encoded_parity[i]); + free_fragment_buffer(encoded_parity[i]); } free(encoded_parity); -- cgit v1.2.1