summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHari Gowtham <hgowtham@redhat.com>2018-07-12 14:02:03 +0530
committerAmar Tumballi <amarts@redhat.com>2018-07-17 11:12:02 +0000
commit19e646f0b6a781334cf1e29c23dd400d790b3be2 (patch)
tree5323de483a503c7a5c523b989f9bbeb3a35aa7ae
parent475826671a4bce7dada95e04cd9466d431e444e5 (diff)
core: dereference check on the variables in glusterfs_handle_brick_status
problem: In a race condition, the active->first which is supposed to be filled is NULL and trying to dereference it crashs. back trace: Core was generated by `/usr/sbin/glusterfsd -s bxts470192.eu.rabonet.com --volfile-id prod_xvavol.bxts'. Program terminated with signal 11, Segmentation fault. 1029 any = active->first; (gdb) bt Change-Id: Ia6291865319a9456b8b01a5251be2679c4985b7c fixes: bz#1600451 Signed-off-by: Hari Gowtham <hgowtham@redhat.com>
-rw-r--r--glusterfsd/src/glusterfsd-mgmt.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/glusterfsd/src/glusterfsd-mgmt.c b/glusterfsd/src/glusterfsd-mgmt.c
index 7122fc0d127..f1b2f9e7123 100644
--- a/glusterfsd/src/glusterfsd-mgmt.c
+++ b/glusterfsd/src/glusterfsd-mgmt.c
@@ -1127,8 +1127,23 @@ glusterfs_handle_brick_status (rpcsvc_request_t *req)
}
ctx = glusterfsd_ctx;
- GF_ASSERT (ctx);
+ if (ctx == NULL) {
+ gf_log (this->name, GF_LOG_ERROR, "ctx returned NULL");
+ ret = -1;
+ goto out;
+ }
+ if (ctx->active == NULL) {
+ gf_log (this->name, GF_LOG_ERROR, "ctx->active returned NULL");
+ ret = -1;
+ goto out;
+ }
active = ctx->active;
+ if (ctx->active->first == NULL) {
+ gf_log (this->name, GF_LOG_ERROR, "ctx->active->first "
+ "returned NULL");
+ ret = -1;
+ goto out;
+ }
server_xl = active->first;
brick_xl = get_xlator_by_name (server_xl, brickname);