summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--xlators/features/bit-rot/src/bitd/bit-rot-scrub.c4
-rw-r--r--xlators/storage/posix/src/posix-gfid-path.c18
2 files changed, 14 insertions, 8 deletions
diff --git a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
index b856c168eb7..63903b0d235 100644
--- a/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
+++ b/xlators/features/bit-rot/src/bitd/bit-rot-scrub.c
@@ -130,6 +130,8 @@ bitd_scrub_post_compute_check(xlator_t *this, br_child_t *child, fd_t *fd,
(void)memcpy(*signature, signptr, sizeof(br_isignature_out_t) + signlen);
+ (*signature)->signaturelen = signlen;
+
unref_dict:
dict_unref(xattr);
out:
@@ -222,7 +224,7 @@ bitd_compare_ckum(xlator_t *this, br_isignature_out_t *sign, unsigned char *md,
GF_VALIDATE_OR_GOTO(this->name, md, out);
GF_VALIDATE_OR_GOTO(this->name, entry, out);
- if (strncmp(sign->signature, (char *)md, strlen(sign->signature)) == 0) {
+ if (strncmp(sign->signature, (char *)md, sign->signaturelen) == 0) {
gf_msg_debug(this->name, 0,
"%s [GFID: %s | Brick: %s] "
"matches calculated checksum",
diff --git a/xlators/storage/posix/src/posix-gfid-path.c b/xlators/storage/posix/src/posix-gfid-path.c
index 4a81be28169..de8b4d70c07 100644
--- a/xlators/storage/posix/src/posix-gfid-path.c
+++ b/xlators/storage/posix/src/posix-gfid-path.c
@@ -128,9 +128,7 @@ posix_get_gfid2path(xlator_t *this, inode_t *inode, const char *real_path,
char keybuffer[4096] = {
0,
};
- char value_buf[8192] = {
- 0,
- };
+
uuid_t pargfid = {
0,
};
@@ -161,6 +159,12 @@ posix_get_gfid2path(xlator_t *this, inode_t *inode, const char *real_path,
}
found = _gf_true;
} else {
+ char value_buf[8192] = {
+ 0,
+ };
+ char xattr_value[8192] = {
+ 0,
+ };
have_val = _gf_false;
size = sys_llistxattr(real_path, value_buf, sizeof(value_buf) - 1);
if (size > 0) {
@@ -216,8 +220,8 @@ posix_get_gfid2path(xlator_t *this, inode_t *inode, const char *real_path,
}
found = _gf_true;
- size = sys_lgetxattr(real_path, keybuffer, value_buf,
- sizeof(value_buf) - 1);
+ size = sys_lgetxattr(real_path, keybuffer, xattr_value,
+ sizeof(xattr_value) - 1);
if (size == -1) {
ret = -1;
*op_errno = errno;
@@ -229,13 +233,13 @@ posix_get_gfid2path(xlator_t *this, inode_t *inode, const char *real_path,
}
/* Parse pargfid from xattr value*/
- strncpy(pargfid_str, value_buf, 36);
+ strncpy(pargfid_str, xattr_value, 36);
pargfid_str[36] = '\0';
gf_uuid_parse(pargfid_str, pargfid);
/* Convert pargfid to path */
ret = posix_resolve_dirgfid_to_path(pargfid, priv->base_path,
- &value_buf[37], &paths[i]);
+ &xattr_value[37], &paths[i]);
i++;
ignore: