|
|
d2787b |
From d491843640658e91a77f15647cefd1c00422c731 Mon Sep 17 00:00:00 2001
|
|
|
d2787b |
From: Vinayak hariharmath <65405035+VHariharmath-rh@users.noreply.github.com>
|
|
|
d2787b |
Date: Wed, 21 Oct 2020 16:14:29 +0530
|
|
|
d2787b |
Subject: [PATCH 565/584] libglusterfs/coverity: pointer to local outside the
|
|
|
d2787b |
scope
|
|
|
d2787b |
|
|
|
d2787b |
issue: gf_store_read_and_tokenize() returns the address
|
|
|
d2787b |
of the locally referred string.
|
|
|
d2787b |
|
|
|
d2787b |
fix: pass the buf to gf_store_read_and_tokenize() and
|
|
|
d2787b |
use it for tokenize.
|
|
|
d2787b |
|
|
|
d2787b |
CID: 1430143
|
|
|
d2787b |
|
|
|
d2787b |
Backport of:
|
|
|
d2787b |
> Upstream-patch: https://github.com/gluster/glusterfs/pull/1675
|
|
|
d2787b |
> Updates: #1060
|
|
|
d2787b |
> Change-Id: Ifc346540c263f58f4014ba2ba8c1d491c20ac609
|
|
|
d2787b |
> Signed-off-by: Vinayakswami Hariharmath <vharihar@redhat.com>
|
|
|
d2787b |
|
|
|
d2787b |
BUG: 1925425
|
|
|
d2787b |
Change-Id: Ifc346540c263f58f4014ba2ba8c1d491c20ac609
|
|
|
d2787b |
Signed-off-by: Vinayakswami Hariharmath <vharihar@redhat.com>
|
|
|
d2787b |
Reviewed-on: https://code.engineering.redhat.com/gerrit/c/rhs-glusterfs/+/244959
|
|
|
d2787b |
Tested-by: RHGS Build Bot <nigelb@redhat.com>
|
|
|
d2787b |
Reviewed-by: Sunil Kumar Heggodu Gopala Acharya <sheggodu@redhat.com>
|
|
|
d2787b |
---
|
|
|
d2787b |
libglusterfs/src/glusterfs/store.h | 3 ++-
|
|
|
d2787b |
libglusterfs/src/store.c | 13 ++++++++-----
|
|
|
d2787b |
xlators/mgmt/glusterd/src/glusterd-store.c | 3 ++-
|
|
|
d2787b |
3 files changed, 12 insertions(+), 7 deletions(-)
|
|
|
d2787b |
|
|
|
d2787b |
diff --git a/libglusterfs/src/glusterfs/store.h b/libglusterfs/src/glusterfs/store.h
|
|
|
d2787b |
index f63bd05..68a20ad 100644
|
|
|
d2787b |
--- a/libglusterfs/src/glusterfs/store.h
|
|
|
d2787b |
+++ b/libglusterfs/src/glusterfs/store.h
|
|
|
d2787b |
@@ -60,7 +60,8 @@ gf_store_unlink_tmppath(gf_store_handle_t *shandle);
|
|
|
d2787b |
|
|
|
d2787b |
int
|
|
|
d2787b |
gf_store_read_and_tokenize(FILE *file, char **iter_key, char **iter_val,
|
|
|
d2787b |
- gf_store_op_errno_t *store_errno);
|
|
|
d2787b |
+ gf_store_op_errno_t *store_errno, char *str,
|
|
|
d2787b |
+ size_t buf_size);
|
|
|
d2787b |
|
|
|
d2787b |
int32_t
|
|
|
d2787b |
gf_store_retrieve_value(gf_store_handle_t *handle, char *key, char **value);
|
|
|
d2787b |
diff --git a/libglusterfs/src/store.c b/libglusterfs/src/store.c
|
|
|
d2787b |
index fa3649b..3af627a 100644
|
|
|
d2787b |
--- a/libglusterfs/src/store.c
|
|
|
d2787b |
+++ b/libglusterfs/src/store.c
|
|
|
d2787b |
@@ -185,7 +185,8 @@ out:
|
|
|
d2787b |
|
|
|
d2787b |
int
|
|
|
d2787b |
gf_store_read_and_tokenize(FILE *file, char **iter_key, char **iter_val,
|
|
|
d2787b |
- gf_store_op_errno_t *store_errno)
|
|
|
d2787b |
+ gf_store_op_errno_t *store_errno, char *str,
|
|
|
d2787b |
+ size_t buf_size)
|
|
|
d2787b |
{
|
|
|
d2787b |
int32_t ret = -1;
|
|
|
d2787b |
char *savetok = NULL;
|
|
|
d2787b |
@@ -193,7 +194,6 @@ gf_store_read_and_tokenize(FILE *file, char **iter_key, char **iter_val,
|
|
|
d2787b |
char *value = NULL;
|
|
|
d2787b |
char *temp = NULL;
|
|
|
d2787b |
size_t str_len = 0;
|
|
|
d2787b |
- char str[8192];
|
|
|
d2787b |
|
|
|
d2787b |
GF_ASSERT(file);
|
|
|
d2787b |
GF_ASSERT(iter_key);
|
|
|
d2787b |
@@ -201,7 +201,7 @@ gf_store_read_and_tokenize(FILE *file, char **iter_key, char **iter_val,
|
|
|
d2787b |
GF_ASSERT(store_errno);
|
|
|
d2787b |
|
|
|
d2787b |
retry:
|
|
|
d2787b |
- temp = fgets(str, 8192, file);
|
|
|
d2787b |
+ temp = fgets(str, buf_size, file);
|
|
|
d2787b |
if (temp == NULL || feof(file)) {
|
|
|
d2787b |
ret = -1;
|
|
|
d2787b |
*store_errno = GD_STORE_EOF;
|
|
|
d2787b |
@@ -275,8 +275,9 @@ gf_store_retrieve_value(gf_store_handle_t *handle, char *key, char **value)
|
|
|
d2787b |
fseek(handle->read, 0, SEEK_SET);
|
|
|
d2787b |
}
|
|
|
d2787b |
do {
|
|
|
d2787b |
+ char buf[8192];
|
|
|
d2787b |
ret = gf_store_read_and_tokenize(handle->read, &iter_key, &iter_val,
|
|
|
d2787b |
- &store_errno);
|
|
|
d2787b |
+ &store_errno, buf, 8192);
|
|
|
d2787b |
if (ret < 0) {
|
|
|
d2787b |
gf_msg_trace("", 0,
|
|
|
d2787b |
"error while reading key '%s': "
|
|
|
d2787b |
@@ -533,6 +534,8 @@ gf_store_iter_get_next(gf_store_iter_t *iter, char **key, char **value,
|
|
|
d2787b |
int32_t ret = -1;
|
|
|
d2787b |
char *iter_key = NULL;
|
|
|
d2787b |
char *iter_val = NULL;
|
|
|
d2787b |
+ char buf[8192];
|
|
|
d2787b |
+
|
|
|
d2787b |
gf_store_op_errno_t store_errno = GD_STORE_SUCCESS;
|
|
|
d2787b |
|
|
|
d2787b |
GF_ASSERT(iter);
|
|
|
d2787b |
@@ -540,7 +543,7 @@ gf_store_iter_get_next(gf_store_iter_t *iter, char **key, char **value,
|
|
|
d2787b |
GF_ASSERT(value);
|
|
|
d2787b |
|
|
|
d2787b |
ret = gf_store_read_and_tokenize(iter->file, &iter_key, &iter_val,
|
|
|
d2787b |
- &store_errno);
|
|
|
d2787b |
+ &store_errno, buf, 8192);
|
|
|
d2787b |
if (ret < 0) {
|
|
|
d2787b |
goto out;
|
|
|
d2787b |
}
|
|
|
d2787b |
diff --git a/xlators/mgmt/glusterd/src/glusterd-store.c b/xlators/mgmt/glusterd/src/glusterd-store.c
|
|
|
d2787b |
index da63c03..a8651d8 100644
|
|
|
d2787b |
--- a/xlators/mgmt/glusterd/src/glusterd-store.c
|
|
|
d2787b |
+++ b/xlators/mgmt/glusterd/src/glusterd-store.c
|
|
|
d2787b |
@@ -4128,8 +4128,9 @@ glusterd_store_retrieve_missed_snaps_list(xlator_t *this)
|
|
|
d2787b |
}
|
|
|
d2787b |
|
|
|
d2787b |
do {
|
|
|
d2787b |
+ char buf[8192];
|
|
|
d2787b |
ret = gf_store_read_and_tokenize(fp, &missed_node_info, &value,
|
|
|
d2787b |
- &store_errno);
|
|
|
d2787b |
+ &store_errno, buf, 8192);
|
|
|
d2787b |
if (ret) {
|
|
|
d2787b |
if (store_errno == GD_STORE_EOF) {
|
|
|
d2787b |
gf_msg_debug(this->name, 0, "EOF for missed_snap_list");
|
|
|
d2787b |
--
|
|
|
d2787b |
1.8.3.1
|
|
|
d2787b |
|