summaryrefslogtreecommitdiff
blob: cbababb39802a1b5bdacd641d411123be8545158 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
From 49559856e19a1a9fad590cc640da7df57c6b9a66 Mon Sep 17 00:00:00 2001
From: Quentin Armitage <quentin@armitage.org.uk>
Date: Wed, 17 Jan 2018 12:08:07 +0000
Subject: [PATCH] Fix segfault if no sorry server configured for a virtual
 server

Issue #751 identified a segfault in vs_end_handler(), and it
transpires that the forwarding method of the sorry server was being
checked without first testing that a sorry server had been configured.

Signed-off-by: Quentin Armitage <quentin@armitage.org.uk>
---
 keepalived/check/check_parser.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/keepalived/check/check_parser.c b/keepalived/check/check_parser.c
index b2518da7..170e47d4 100644
--- a/keepalived/check/check_parser.c
+++ b/keepalived/check/check_parser.c
@@ -120,7 +120,7 @@ vs_end_handler(void)
 
 	/* If the real (sorry) server uses tunnel forwarding, the address family
 	 * does not have to match the address family of the virtaul server */
-	if (vs->s_svr->forwarding_method != IP_VS_CONN_F_TUNNEL) {
+	if (vs->s_svr && vs->s_svr->forwarding_method != IP_VS_CONN_F_TUNNEL) {
 		if (vs->af == AF_UNSPEC)
 			vs->af = vs->s_svr->addr.ss_family;
 		else if (vs->af != vs->s_svr->addr.ss_family) {