From d85726d19432384e2c3dd6ceff4b7b4ec3f8f57a Mon Sep 17 00:00:00 2001 From: Harshavardhana Date: Mon, 23 Dec 2013 02:52:12 -0800 Subject: crypt: On calloc failure follow goto statement At -------------------------------------------- 1423 if (local->vec.iov_base == NULL) { -------------------------------------------- This condition being true leads to NULL pointer to be passed into `memcpy` later at ---------------------------------------------------- 1432 memcpy((char *)local->vec.iov_base + copied, ---------------------------------------------------- Avoid this by clean exit through a goto statement with in the conditional. Change-Id: I2546b7dd634dc251adae8ca39497c4c3ef520f62 BUG: 1030058 Signed-off-by: Harshavardhana Reviewed-on: http://review.gluster.org/6576 Reviewed-by: Shyamsundar Ranganathan Reviewed-by: Edward Shishkin Tested-by: Edward Shishkin Tested-by: Gluster Build System --- xlators/encryption/crypt/src/crypt.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'xlators/encryption/crypt/src') diff --git a/xlators/encryption/crypt/src/crypt.c b/xlators/encryption/crypt/src/crypt.c index db2e6d83c..47ff38e50 100644 --- a/xlators/encryption/crypt/src/crypt.c +++ b/xlators/encryption/crypt/src/crypt.c @@ -1421,8 +1421,11 @@ static int32_t prune_write(call_frame_t *frame, gf_crypt_mt_data); if (local->vec.iov_base == NULL) { + gf_log(this->name, GF_LOG_WARNING, + "Failed to calloc head block for prune"); local->op_ret = -1; local->op_errno = ENOMEM; + goto put_one_call; } for (i = 0; i < count; i++) { to_copy = vec[i].iov_len; -- cgit