summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunny Kumar <sunkumar@redhat.com>2018-07-17 15:56:35 +0530
committerShyamsundar Ranganathan <srangana@redhat.com>2018-08-16 14:31:14 +0000
commite09e3549c293f0d7f448ebb70a4e9fcc671ea098 (patch)
tree59ee5bb57a838161004e34bf966b0ced75e8e758
parent27ffcfebd7e1ec1d068adcfb78cabe014c14c62f (diff)
geo-rep : fix possible crash
Problem : In 'glusterd_verify_slave' while tokenizing error message we call 'strtok_r' and store return value in 'tmp' which can be NULL. We are passing this 'tmp' as 1st argument to 'strcmp' which will lead to segmentation fault. Solution : before calling 'strcmp' we should NULL check 'tmp'. Backport of: > Change-Id: Ifd3864b904afe6cd09d9e5a4b55c6d0578e22b9d > BUG: 1602121 > Signed-off-by: Sunny Kumar <sunkumar@redhat.com> Change-Id: Ifd3864b904afe6cd09d9e5a4b55c6d0578e22b9d fixes: bz#1611115 Signed-off-by: Sunny Kumar <sunkumar@redhat.com>
-rw-r--r--xlators/mgmt/glusterd/src/glusterd-geo-rep.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
index fa40674510f..688b995f0e1 100644
--- a/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
+++ b/xlators/mgmt/glusterd/src/glusterd-geo-rep.c
@@ -2770,14 +2770,17 @@ glusterd_verify_slave (char *volname, char *slave_url, char *slave_vol,
/* Tokenize the error message from gverify.sh to figure out
* if the error is a force blocker or not. */
tmp = strtok_r (buf, "|", &save_ptr);
+ if (!tmp) {
+ ret = -1;
+ goto out;
+ }
if (!strcmp (tmp, "FORCE_BLOCKER"))
*is_force_blocker = 1;
else {
/* No FORCE_BLOCKER flag present so all that is
* present is the error message. */
*is_force_blocker = 0;
- if (tmp)
- *op_errstr = gf_strdup (tmp);
+ *op_errstr = gf_strdup (tmp);
ret = -1;
goto out;
}