import fence-virt-0.4.0-9.el8
This commit is contained in:
parent
8718be934c
commit
08f550d16f
@ -0,0 +1,29 @@
|
|||||||
|
From 36367a99eb803a7941f6cbfd6086e7a71bf91e21 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Andrew Price <anprice@redhat.com>
|
||||||
|
Date: Tue, 29 Oct 2019 11:27:06 +0000
|
||||||
|
Subject: [PATCH] fence_virtd: Fix segfault in vl_get when no domains are found
|
||||||
|
|
||||||
|
If virConnectListAllDomains() returns 0 on every iteration, the loop
|
||||||
|
will end with a vl == NULL and the pointer dereference in the qsort()
|
||||||
|
call will result in a segfault. Check for NULL on completion of the loop
|
||||||
|
to guard against that.
|
||||||
|
|
||||||
|
Signed-off-by: Andrew Price <anprice@redhat.com>
|
||||||
|
---
|
||||||
|
server/virt.c | 3 +++
|
||||||
|
1 file changed, 3 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/server/virt.c b/server/virt.c
|
||||||
|
index 9710791..ed08e0c 100644
|
||||||
|
--- a/server/virt.c
|
||||||
|
+++ b/server/virt.c
|
||||||
|
@@ -128,6 +128,9 @@ virt_list_t *vl_get(virConnectPtr *vp, int vp_count, int my_id)
|
||||||
|
|
||||||
|
_free_dom_list(dom_list, ret);
|
||||||
|
}
|
||||||
|
+ /* No domains found */
|
||||||
|
+ if (!vl)
|
||||||
|
+ return NULL;
|
||||||
|
|
||||||
|
/* We have all the locally running domains & states now */
|
||||||
|
/* Sort */
|
@ -0,0 +1,81 @@
|
|||||||
|
From 958c0035aa6a69149c1a0fa218863c26e755d9e6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Ryan McCabe <rmccabe@redhat.com>
|
||||||
|
Date: Fri, 19 Jan 2018 11:04:22 -0500
|
||||||
|
Subject: [PATCH] fence_virtd: Return control to main loop on select
|
||||||
|
interruption
|
||||||
|
|
||||||
|
Return control to the dispatch loop if select is interrupted by a
|
||||||
|
signal. The code that retried the select without breaking out of the
|
||||||
|
dispatch loop caused the daemon to not be able to be killed cleanly.
|
||||||
|
|
||||||
|
Resolves: https://github.com/ClusterLabs/fence-virt/issues/10
|
||||||
|
|
||||||
|
Signed-off-by: Ryan McCabe <rmccabe@redhat.com>
|
||||||
|
---
|
||||||
|
server/mcast.c | 9 +++++++--
|
||||||
|
server/serial.c | 9 ++++++---
|
||||||
|
server/tcp.c | 9 +++++++--
|
||||||
|
4 files changed, 28 insertions(+), 9 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/server/mcast.c b/server/mcast.c
|
||||||
|
index 0336823..e103675 100644
|
||||||
|
--- a/server/mcast.c
|
||||||
|
+++ b/server/mcast.c
|
||||||
|
@@ -350,9 +350,14 @@ mcast_dispatch(listener_context_t c, struct timeval *timeout)
|
||||||
|
FD_ZERO(&rfds);
|
||||||
|
FD_SET(info->mc_sock, &rfds);
|
||||||
|
|
||||||
|
- n = _select_retry((info->mc_sock)+1, &rfds, NULL, NULL, timeout);
|
||||||
|
- if (n <= 0)
|
||||||
|
+ n = select((info->mc_sock)+1, &rfds, NULL, NULL, timeout);
|
||||||
|
+ if (n <= 0) {
|
||||||
|
+ if (errno == EINTR || errno == EAGAIN)
|
||||||
|
+ n = 0;
|
||||||
|
+ else
|
||||||
|
+ dbg_printf(2, "select: %s\n", strerror(errno));
|
||||||
|
return n;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
slen = sizeof(sin);
|
||||||
|
len = recvfrom(info->mc_sock, &data, sizeof(data), 0,
|
||||||
|
diff --git a/server/serial.c b/server/serial.c
|
||||||
|
index 70eb22b..23d143d 100644
|
||||||
|
--- a/server/serial.c
|
||||||
|
+++ b/server/serial.c
|
||||||
|
@@ -272,9 +272,12 @@ serial_dispatch(listener_context_t c, struct timeval *timeout)
|
||||||
|
if (info->wake_fd > max)
|
||||||
|
max = info->wake_fd;
|
||||||
|
|
||||||
|
- n = _select_retry(max+1, &rfds, NULL, NULL, timeout);
|
||||||
|
- if (n < 0) {
|
||||||
|
- dbg_printf(2, "select: %s\n", strerror(errno));
|
||||||
|
+ n = select(max+1, &rfds, NULL, NULL, timeout);
|
||||||
|
+ if (n <= 0) {
|
||||||
|
+ if (errno == EINTR || errno == EAGAIN)
|
||||||
|
+ n = 0;
|
||||||
|
+ else
|
||||||
|
+ dbg_printf(2, "select: %s\n", strerror(errno));
|
||||||
|
return n;
|
||||||
|
}
|
||||||
|
|
||||||
|
diff --git a/server/tcp.c b/server/tcp.c
|
||||||
|
index 09366b7..bbd347e 100644
|
||||||
|
--- a/server/tcp.c
|
||||||
|
+++ b/server/tcp.c
|
||||||
|
@@ -278,9 +278,14 @@ tcp_dispatch(listener_context_t c, struct timeval *timeout)
|
||||||
|
FD_ZERO(&rfds);
|
||||||
|
FD_SET(info->listen_sock, &rfds);
|
||||||
|
|
||||||
|
- n = _select_retry(info->listen_sock + 1, &rfds, NULL, NULL, timeout);
|
||||||
|
- if (n <= 0)
|
||||||
|
+ n = select(info->listen_sock + 1, &rfds, NULL, NULL, timeout);
|
||||||
|
+ if (n <= 0) {
|
||||||
|
+ if (errno == EINTR || errno == EAGAIN)
|
||||||
|
+ n = 0;
|
||||||
|
+ else
|
||||||
|
+ dbg_printf(2, "select: %s\n", strerror(errno));
|
||||||
|
return n;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
client_fd = accept(info->listen_sock, NULL, NULL);
|
||||||
|
if (client_fd < 0) {
|
@ -1,6 +1,6 @@
|
|||||||
Name: fence-virt
|
Name: fence-virt
|
||||||
Version: 0.4.0
|
Version: 0.4.0
|
||||||
Release: 7%{?dist}
|
Release: 9%{?dist}
|
||||||
Summary: A pluggable fencing framework for virtual machines
|
Summary: A pluggable fencing framework for virtual machines
|
||||||
Group: System Environment/Base
|
Group: System Environment/Base
|
||||||
License: GPLv2+
|
License: GPLv2+
|
||||||
@ -14,6 +14,8 @@ Source0: http://people.redhat.com/rmccabe/fence-virt/%{name}-%{version}.tar.bz2
|
|||||||
Patch0: bz1624110-1-harden-fPIE.patch
|
Patch0: bz1624110-1-harden-fPIE.patch
|
||||||
Patch1: bz1624110-2-fence_virt-fix-coredump.patch
|
Patch1: bz1624110-2-fence_virt-fix-coredump.patch
|
||||||
Patch2: bz1668357-fence_virt-dont-report-success-incorrect-parameter.patch
|
Patch2: bz1668357-fence_virt-dont-report-success-incorrect-parameter.patch
|
||||||
|
Patch3: bz1766993-fence_virtd-1-fix-segfault-no-domains.patch
|
||||||
|
Patch4: bz1766993-fence_virtd-2-return-mainloop-on-interrupt.patch
|
||||||
|
|
||||||
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
|
||||||
|
|
||||||
@ -101,6 +103,8 @@ are located on corosync cluster nodes.
|
|||||||
%patch0 -p1
|
%patch0 -p1
|
||||||
%patch1 -p1
|
%patch1 -p1
|
||||||
%patch2 -p1 -F1
|
%patch2 -p1 -F1
|
||||||
|
%patch3 -p1
|
||||||
|
%patch4 -p1
|
||||||
|
|
||||||
%build
|
%build
|
||||||
./autogen.sh
|
./autogen.sh
|
||||||
@ -192,6 +196,10 @@ fi
|
|||||||
%{_libdir}/%{name}/cpg.so
|
%{_libdir}/%{name}/cpg.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Thu Jan 30 2020 Oyvind Albrigtsen <oalbrigt@redhat.com> - 0.4.0-9
|
||||||
|
- fence_virtd: fix segfault when no domains are found
|
||||||
|
Resolves: rhbz#1766993
|
||||||
|
|
||||||
* Tue Jul 23 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 0.4.0-7
|
* Tue Jul 23 2019 Oyvind Albrigtsen <oalbrigt@redhat.com> - 0.4.0-7
|
||||||
- fence_xvm/fence_virt: dont report success for incorrect parameter
|
- fence_xvm/fence_virt: dont report success for incorrect parameter
|
||||||
Resolves: rhbz#1668357
|
Resolves: rhbz#1668357
|
||||||
|
Loading…
Reference in New Issue
Block a user