summaryrefslogtreecommitdiffstats
path: root/xlators/storage/posix/src
diff options
context:
space:
mode:
Diffstat (limited to 'xlators/storage/posix/src')
-rw-r--r--xlators/storage/posix/src/posix-helpers.c27
-rw-r--r--xlators/storage/posix/src/posix-inode-fd-ops.c17
2 files changed, 26 insertions, 18 deletions
diff --git a/xlators/storage/posix/src/posix-helpers.c b/xlators/storage/posix/src/posix-helpers.c
index b4d433e369d..bd5b6e6b98b 100644
--- a/xlators/storage/posix/src/posix-helpers.c
+++ b/xlators/storage/posix/src/posix-helpers.c
@@ -272,18 +272,21 @@ _posix_xattr_get_set_from_backend (posix_xattr_filler_t *filler, char *key)
}
if (xattr_size != -1) {
- value = GF_CALLOC (1, xattr_size + 1, gf_posix_mt_char);
+ value = GF_MALLOC (xattr_size + 1, gf_posix_mt_char);
if (!value)
goto out;
if (have_val) {
memcpy (value, val_buf, xattr_size);
- } else if (filler->real_path) {
- xattr_size = sys_lgetxattr (filler->real_path, key,
- value, xattr_size);
} else {
- xattr_size = sys_fgetxattr (filler->fdnum, key, value,
- xattr_size);
+ bzero(value, xattr_size + 1);
+ if (filler->real_path) {
+ xattr_size = sys_lgetxattr (filler->real_path,
+ key, value, xattr_size);
+ } else {
+ xattr_size = sys_fgetxattr (filler->fdnum, key,
+ value, xattr_size);
+ }
}
if (xattr_size == -1) {
if (filler->real_path)
@@ -2518,7 +2521,7 @@ posix_fetch_signature_xattr (char *real_path,
gf_boolean_t have_val = _gf_false;
xattrsize = sys_lgetxattr (real_path, key, val_buf,
- sizeof(val_buf) - 1);
+ sizeof(val_buf) - 1);
if (xattrsize >= 0) {
have_val = _gf_true;
} else {
@@ -2529,12 +2532,14 @@ posix_fetch_signature_xattr (char *real_path,
if (xattrsize == -1)
goto error_return;
}
- memptr = GF_CALLOC (xattrsize + 1, sizeof (char), gf_posix_mt_char);
+ memptr = GF_MALLOC (xattrsize + 1, gf_posix_mt_char);
if (!memptr)
goto error_return;
if (have_val) {
memcpy (memptr, val_buf, xattrsize);
+ memptr[xattrsize] = '\0';
} else {
+ bzero (memptr, xattrsize + 1);
ret = sys_lgetxattr (real_path, key, memptr, xattrsize);
if (ret == -1)
goto freemem;
@@ -2881,7 +2886,7 @@ posix_set_iatt_in_dict (dict_t *dict, struct iatt *preop, struct iatt *postop)
return ret;
if (postop) {
- stbuf = GF_CALLOC (1, len, gf_common_mt_char);
+ stbuf = GF_MALLOC (len, gf_common_mt_char);
if (!stbuf)
goto out;
memcpy (stbuf, postop, len);
@@ -2894,7 +2899,7 @@ posix_set_iatt_in_dict (dict_t *dict, struct iatt *preop, struct iatt *postop)
}
if (preop) {
- prebuf = GF_CALLOC (1, len, gf_common_mt_char);
+ prebuf = GF_MALLOC (len, gf_common_mt_char);
if (!prebuf)
goto out;
memcpy (prebuf, preop, len);
@@ -2906,7 +2911,7 @@ posix_set_iatt_in_dict (dict_t *dict, struct iatt *preop, struct iatt *postop)
}
if (postop) {
- postbuf = GF_CALLOC (1, len, gf_common_mt_char);
+ postbuf = GF_MALLOC (len, gf_common_mt_char);
if (!postbuf)
goto out;
memcpy (postbuf, postop, len);
diff --git a/xlators/storage/posix/src/posix-inode-fd-ops.c b/xlators/storage/posix/src/posix-inode-fd-ops.c
index 89355757508..ed5f439ac73 100644
--- a/xlators/storage/posix/src/posix-inode-fd-ops.c
+++ b/xlators/storage/posix/src/posix-inode-fd-ops.c
@@ -3224,7 +3224,7 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
goto out;
}
}
- value = GF_CALLOC (size + 1, sizeof(char), gf_posix_mt_char);
+ value = GF_MALLOC (size + 1, gf_posix_mt_char);
if (!value) {
op_ret = -1;
op_errno = ENOMEM;
@@ -3233,6 +3233,7 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
if (have_val) {
memcpy (value, value_buf, size);
} else {
+ bzero (value, size + 1);
size = sys_lgetxattr (real_path, key, value, size);
if (size == -1) {
op_ret = -1;
@@ -3349,8 +3350,7 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
goto out;
}
}
- value = GF_CALLOC (size + 1, sizeof(char),
- gf_posix_mt_char);
+ value = GF_MALLOC (size + 1, gf_posix_mt_char);
if (!value) {
op_errno = errno;
goto out;
@@ -3358,6 +3358,7 @@ posix_getxattr (call_frame_t *frame, xlator_t *this,
if (have_val) {
memcpy (value, value_buf, size);
} else {
+ bzero(value, size + 1);
size = sys_lgetxattr (real_path, keybuffer, value, size);
if (size == -1) {
op_errno = errno;
@@ -3533,7 +3534,7 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,
goto done;
}
}
- value = GF_CALLOC (size + 1, sizeof(char), gf_posix_mt_char);
+ value = GF_MALLOC (size + 1, gf_posix_mt_char);
if (!value) {
op_ret = -1;
op_errno = ENOMEM;
@@ -3542,6 +3543,7 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,
if (have_val) {
memcpy (value, value_buf, size);
} else {
+ bzero (value, size + 1);
size = sys_fgetxattr (_fd, key, value, size);
if (size == -1) {
op_ret = -1;
@@ -3639,8 +3641,7 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,
break;
}
}
- value = GF_CALLOC (size + 1, sizeof(char),
- gf_posix_mt_char);
+ value = GF_MALLOC (size + 1, gf_posix_mt_char);
if (!value) {
op_ret = -1;
op_errno = errno;
@@ -3649,6 +3650,7 @@ posix_fgetxattr (call_frame_t *frame, xlator_t *this,
if (have_val) {
memcpy (value, value_buf, size);
} else {
+ bzero (value, size + 1);
size = sys_fgetxattr (_fd, key, value, size);
if (size == -1) {
op_ret = -1;
@@ -5046,11 +5048,12 @@ posix_readdirp_fill (xlator_t *this, fd_t *fd, gf_dirent_t *entries, dict_t *dic
hpath[len] = '/';
list_for_each_entry (entry, &entries->list, list) {
- memset (gfid, 0, 16);
inode = inode_grep (fd->inode->table, fd->inode,
entry->d_name);
if (inode)
gf_uuid_copy (gfid, inode->gfid);
+ else
+ bzero(gfid, 16);
strcpy (&hpath[len+1], entry->d_name);