From 1ef9270c0990e93712c211516ccc47c3bb27674b Mon Sep 17 00:00:00 2001 From: hari gowtham Date: Tue, 8 May 2018 11:42:33 +0530 Subject: Glusterfsd: brick crash during get-state The xprt's dereferencing wasn't checked before using it for the strcmp, which caused the segfault and crashed the brick process. fix: Check every deferenced variable before using it. Change-Id: I7f705d1c88a124e8219bb877156fadb17ecf11c3 fixes: bz#1575864 Signed-off-by: hari gowtham --- xlators/protocol/server/src/server.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'xlators/protocol/server/src/server.c') diff --git a/xlators/protocol/server/src/server.c b/xlators/protocol/server/src/server.c index eef956cc21a..294b0de34e4 100644 --- a/xlators/protocol/server/src/server.c +++ b/xlators/protocol/server/src/server.c @@ -187,8 +187,11 @@ server_priv_to_dict (xlator_t *this, dict_t *dict, char *brickname) pthread_mutex_lock (&conf->mutex); { list_for_each_entry (xprt, &conf->xprt_list, list) { - if (!strcmp (brickname, - xprt->xl_private->bound_xl->name)) { + if ((xprt) && (xprt->xl_private) && + (xprt->xl_private->bound_xl) && + (xprt->xl_private->bound_xl->name) && (brickname) && + (!strcmp (brickname, + xprt->xl_private->bound_xl->name))) { peerinfo = &xprt->peerinfo; memset (key, 0, sizeof (key)); snprintf (key, sizeof (key), -- cgit