From 6c9ad17b1ed99540dc30319065a96e3c12040f30 Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Tue, 3 Mar 2015 09:56:15 -0300 Subject: [PATCH] Release memory when returning error during rnet_encode. --- rnet_encode.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/rnet_encode.c b/rnet_encode.c index fb86942..1a391f2 100644 --- a/rnet_encode.c +++ b/rnet_encode.c @@ -29,7 +29,7 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) { - int r; + int r = -EIO; uint32_t tp_arq; uint32_t id_dec; @@ -54,7 +54,7 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) file_len = rnet_decfile_get_file(decfile)->len; hash = rnet_decfile_get_file_hash(decfile); if (!hash) - return -1; + goto out; header = rnet_decfile_get_header(decfile); codigo_recnet = rnet_decfile_get_header_field(decfile, "codigo_recnet"); @@ -76,7 +76,8 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) header_head = RNET_HEADER_HEAD_2013; header_tail = RNET_HEADER_TAIL_2013; } else { - return -EINVAL; + r = -EINVAL; + goto out2; } /* This was already checked at parse time. */ @@ -119,6 +120,12 @@ int rnet_encode(struct rnet_decfile *decfile, struct rnet_message **msg) free(hash); if (r < 0) - return r; + goto out; return 0; + +out2: + free(hash); +out: + rnet_message_del(*msg); + return r; } -- 2.20.1