diff options
author | Harshavardhana <harsha@harshavardhana.net> | 2013-12-23 02:52:12 -0800 |
---|---|---|
committer | Vijay Bellur <vbellur@redhat.com> | 2013-12-29 23:48:50 -0800 |
commit | d85726d19432384e2c3dd6ceff4b7b4ec3f8f57a (patch) | |
tree | 3d5de0d9887dd3bcb36371dc5f5047c7976c2872 | |
parent | efcfb60f87f6d5ce4aa8ec7f4cd3bbe51a87f538 (diff) |
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 <harsha@harshavardhana.net>
Reviewed-on: http://review.gluster.org/6576
Reviewed-by: Shyamsundar Ranganathan <srangana@redhat.com>
Reviewed-by: Edward Shishkin <edward.shishkin@gmail.com>
Tested-by: Edward Shishkin <edward.shishkin@gmail.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
-rw-r--r-- | xlators/encryption/crypt/src/crypt.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/xlators/encryption/crypt/src/crypt.c b/xlators/encryption/crypt/src/crypt.c index db2e6d83cf5..47ff38e501d 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; |