diff options
| author | Poornima G <pgurusid@redhat.com> | 2017-08-03 17:43:22 +0530 | 
|---|---|---|
| committer | Jeff Darcy <jeff@pl.atyp.us> | 2017-08-07 16:28:45 +0000 | 
| commit | e11296f8e52b7e3b13d21b41d4fa34baea878edf (patch) | |
| tree | 2d8d76600e48c1a9336651354cce779c10384d3e /xlators/features/bit-rot/src | |
| parent | ebc8237d8c445af208446c937f31aa311d1efb2c (diff) | |
gfapi: Duplicate the buffer sent in setxattr calls
Issue:
The caller of glfs_setxattr sends a buffer to set as the value.
We create a dict in which the pointer to the value is set.
Underlying layers like md-cache take a ref on this dict to store
the value for a longer time. But the moment setxattr is complete,
the caller of glfs_setxattr can free the value memory.
Solution:
memcpy the setxattr value to the gluster buffer.
Change-Id: I58753fe702e8b7d0f6c4f058714c65d0ad5d7a0a
BUG: 1477488
Signed-off-by: Poornima G <pgurusid@redhat.com>
Reviewed-on: https://review.gluster.org/17967
Reviewed-by: soumya k <skoduri@redhat.com>
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
Diffstat (limited to 'xlators/features/bit-rot/src')
| -rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot.c | 2 | 
1 files changed, 1 insertions, 1 deletions
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot.c b/xlators/features/bit-rot/src/bitd/bit-rot.c index 3c42cb2a1f6..c5b4037ee98 100644 --- a/xlators/features/bit-rot/src/bitd/bit-rot.c +++ b/xlators/features/bit-rot/src/bitd/bit-rot.c @@ -421,7 +421,7 @@ br_object_read_sign (inode_t *linked_inode, fd_t *fd, br_object_t *object,          xattr = dict_for_key_value                  (GLUSTERFS_SET_OBJECT_SIGNATURE, -                 (void *)sign, signature_size (SHA256_DIGEST_LENGTH)); +                 (void *)sign, signature_size (SHA256_DIGEST_LENGTH), _gf_true);          if (!xattr) {                  gf_msg (this->name, GF_LOG_ERROR, 0, BRB_MSG_SET_SIGN_FAILED,  | 
