diff options
-rw-r--r-- | xlators/features/bit-rot/src/bitd/bit-rot-scrub.c | 4 | ||||
-rw-r--r-- | xlators/storage/posix/src/posix-gfid-path.c | 18 |
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: |