|
|
21ab4e |
From ac62aa039935210120b6ff7a954cff7774afa5f3 Mon Sep 17 00:00:00 2001
|
|
|
21ab4e |
From: Gaurav Yadav <gyadav@redhat.com>
|
|
|
21ab4e |
Date: Mon, 22 May 2017 23:25:47 +0530
|
|
|
21ab4e |
Subject: [PATCH 536/539] libglusterfs : Fix crash in glusterd while peer
|
|
|
21ab4e |
probing
|
|
|
21ab4e |
|
|
|
21ab4e |
glusterd crashes when port is being set explcitly to a
|
|
|
21ab4e |
range which is outside greater than short data type range.
|
|
|
21ab4e |
Eg. sysctl net.ipv4.ip_local_reserved_ports="49152-49156"
|
|
|
21ab4e |
In above case glusterd crashes while parsing the port.
|
|
|
21ab4e |
|
|
|
21ab4e |
With this fix glusterd will be able to handle port range
|
|
|
21ab4e |
between INT_MIN to INT_MAX
|
|
|
21ab4e |
|
|
|
21ab4e |
> Reviewed-on: https://review.gluster.org/17359
|
|
|
21ab4e |
> Smoke: Gluster Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
|
|
|
21ab4e |
> Reviewed-by: Samikshan Bairagya <samikshan@gmail.com>
|
|
|
21ab4e |
> Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
21ab4e |
> Reviewed-by: Niels de Vos <ndevos@redhat.com>
|
|
|
21ab4e |
> Reviewed-by: Jeff Darcy <jeff@pl.atyp.us>
|
|
|
21ab4e |
|
|
|
21ab4e |
Change-Id: I7c75ee67937b0e3384502973d96b1c36c89e0fe1
|
|
|
21ab4e |
BUG: 1465638
|
|
|
21ab4e |
Signed-off-by: Gaurav Yadav <gyadav@redhat.com>
|
|
|
21ab4e |
Reviewed-on: https://code.engineering.redhat.com/gerrit/110562
|
|
|
21ab4e |
Reviewed-by: Atin Mukherjee <amukherj@redhat.com>
|
|
|
21ab4e |
---
|
|
|
21ab4e |
libglusterfs/src/common-utils.c | 10 +++++-----
|
|
|
21ab4e |
tests/bugs/glusterd/bug-1454418-seg-fault.t | 25 +++++++++++++++++++++++++
|
|
|
21ab4e |
2 files changed, 30 insertions(+), 5 deletions(-)
|
|
|
21ab4e |
create mode 100644 tests/bugs/glusterd/bug-1454418-seg-fault.t
|
|
|
21ab4e |
|
|
|
21ab4e |
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c
|
|
|
21ab4e |
index a8f6d13..862ec3b 100644
|
|
|
21ab4e |
--- a/libglusterfs/src/common-utils.c
|
|
|
21ab4e |
+++ b/libglusterfs/src/common-utils.c
|
|
|
21ab4e |
@@ -3198,14 +3198,14 @@ gf_ports_reserved (char *blocked_port, unsigned char *ports, uint32_t ceiling)
|
|
|
21ab4e |
{
|
|
|
21ab4e |
gf_boolean_t result = _gf_false;
|
|
|
21ab4e |
char *range_port = NULL;
|
|
|
21ab4e |
- int16_t tmp_port1 = -1;
|
|
|
21ab4e |
- int16_t tmp_port2 = -1;
|
|
|
21ab4e |
+ int32_t tmp_port1 = -1;
|
|
|
21ab4e |
+ int32_t tmp_port2 = -1;
|
|
|
21ab4e |
|
|
|
21ab4e |
if (strstr (blocked_port, "-") == NULL) {
|
|
|
21ab4e |
/* get rid of the new line character*/
|
|
|
21ab4e |
if (blocked_port[strlen(blocked_port) -1] == '\n')
|
|
|
21ab4e |
blocked_port[strlen(blocked_port) -1] = '\0';
|
|
|
21ab4e |
- if (gf_string2int16 (blocked_port, &tmp_port1) == 0) {
|
|
|
21ab4e |
+ if (gf_string2int32 (blocked_port, &tmp_port1) == 0) {
|
|
|
21ab4e |
if (tmp_port1 > ceiling
|
|
|
21ab4e |
|| tmp_port1 < 0) {
|
|
|
21ab4e |
gf_msg ("glusterfs-socket", GF_LOG_WARNING, 0,
|
|
|
21ab4e |
@@ -3231,7 +3231,7 @@ gf_ports_reserved (char *blocked_port, unsigned char *ports, uint32_t ceiling)
|
|
|
21ab4e |
result = _gf_true;
|
|
|
21ab4e |
goto out;
|
|
|
21ab4e |
}
|
|
|
21ab4e |
- if (gf_string2int16 (range_port, &tmp_port1) == 0) {
|
|
|
21ab4e |
+ if (gf_string2int32 (range_port, &tmp_port1) == 0) {
|
|
|
21ab4e |
if (tmp_port1 > ceiling)
|
|
|
21ab4e |
tmp_port1 = ceiling;
|
|
|
21ab4e |
if (tmp_port1 < 0)
|
|
|
21ab4e |
@@ -3245,7 +3245,7 @@ gf_ports_reserved (char *blocked_port, unsigned char *ports, uint32_t ceiling)
|
|
|
21ab4e |
/* get rid of the new line character*/
|
|
|
21ab4e |
if (range_port[strlen(range_port) -1] == '\n')
|
|
|
21ab4e |
range_port[strlen(range_port) - 1] = '\0';
|
|
|
21ab4e |
- if (gf_string2int16 (range_port, &tmp_port2) == 0) {
|
|
|
21ab4e |
+ if (gf_string2int32 (range_port, &tmp_port2) == 0) {
|
|
|
21ab4e |
if (tmp_port2 > ceiling)
|
|
|
21ab4e |
tmp_port2 = ceiling;
|
|
|
21ab4e |
if (tmp_port2 < 0)
|
|
|
21ab4e |
diff --git a/tests/bugs/glusterd/bug-1454418-seg-fault.t b/tests/bugs/glusterd/bug-1454418-seg-fault.t
|
|
|
21ab4e |
new file mode 100644
|
|
|
21ab4e |
index 0000000..eafaa55
|
|
|
21ab4e |
--- /dev/null
|
|
|
21ab4e |
+++ b/tests/bugs/glusterd/bug-1454418-seg-fault.t
|
|
|
21ab4e |
@@ -0,0 +1,25 @@
|
|
|
21ab4e |
+#!/bin/bash
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+. $(dirname $0)/../../include.rc
|
|
|
21ab4e |
+. $(dirname $0)/../../cluster.rc
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+cleanup;
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+## Setting Port number in specific range
|
|
|
21ab4e |
+sysctl net.ipv4.ip_local_reserved_ports="24007-24008,32765-32768,49152-49156"
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+## Start a 2 node virtual cluster
|
|
|
21ab4e |
+TEST launch_cluster 2;
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+## Peer probe server 2 from server 1 cli
|
|
|
21ab4e |
+TEST $CLI_1 peer probe $H2;
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+EXPECT_WITHIN $PROBE_TIMEOUT 1 peer_count
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+sysctl net.ipv4.ip_local_reserved_ports="
|
|
|
21ab4e |
+"
|
|
|
21ab4e |
+
|
|
|
21ab4e |
+cleanup;
|
|
|
21ab4e |
+
|
|
|
21ab4e |
--
|
|
|
21ab4e |
1.8.3.1
|
|
|
21ab4e |
|