From 079f18ff1e4aa5f721a2deeb8dc6a5066063ebcb Mon Sep 17 00:00:00 2001 From: "Tom \"spot\" Callaway" Date: Mon, 12 Sep 2011 09:49:53 -0400 Subject: [PATCH 01/12] convert to systemd --- xinetd.service | 13 ++++++++++++ xinetd.spec | 55 ++++++++++++++++++++++++++++++++------------------ 2 files changed, 48 insertions(+), 20 deletions(-) create mode 100644 xinetd.service diff --git a/xinetd.service b/xinetd.service new file mode 100644 index 0000000..cd8dadc --- /dev/null +++ b/xinetd.service @@ -0,0 +1,13 @@ +[Unit] +Description=Xinetd A Powerful Replacement For Inetd +After=syslog.target network.target + +[Service] +Type=forking +PIDFile=/var/run/xinetd.pid +EnvironmentFile=-/etc/sysconfig/xinetd +ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS" + +[Install] +WantedBy=multi-user.target + diff --git a/xinetd.spec b/xinetd.spec index 8a94d6c..8d6f076 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,13 +1,13 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 36%{?dist} +Release: 37%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 URL: http://www.xinetd.org Source: http://www.xinetd.org/xinetd-%{version}.tar.gz -Source1: xinetd.init +Source1: xinetd.service Source3: xinetd.sysconf Patch0: xinetd-2.3.11-pie.patch Patch1: xinetd-2.3.12-tcp_rpc.patch @@ -46,11 +46,15 @@ Patch20: xinetd-2.3.14-fix-type-punned-ptr.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 -Requires: /sbin/chkconfig /etc/init.d /sbin/service +BuildRequires: systemd-units +Requires(post): systemd-sysv +Requires(post): systemd-units +Requires(preun): systemd-units +Requires(postun): systemd-units %{!?tcp_wrappers:BuildRequires: tcp_wrappers-devel} Requires: filesystem >= 2.0.1, initscripts, setup, fileutils Provides: inetd -BuildRoot: %{_tmppath}/%{name}-%{version}-root + %description Xinetd is a secure replacement for inetd, the Internet services @@ -102,15 +106,14 @@ export LDFLAGS="$LDFLAGS -Wl,-z,relro,-z,now" make %install -rm -rf $RPM_BUILD_ROOT -mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d +mkdir -p $RPM_BUILD_ROOT%{_unitdir} mkdir -p $RPM_BUILD_ROOT/etc/xinetd.d/ # Remove unneeded service rm -f contrib/xinetd.d/ftp-sensor %makeinstall DAEMONDIR=$RPM_BUILD_ROOT/usr/sbin MANDIR=$RPM_BUILD_ROOT/%{_mandir} install -m 644 contrib/xinetd.conf $RPM_BUILD_ROOT/etc install -m 644 contrib/xinetd.d/* $RPM_BUILD_ROOT/etc/xinetd.d -install -m 755 %SOURCE1 $RPM_BUILD_ROOT/etc/rc.d/init.d/xinetd +install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir} rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/itox* rm -f $RPM_BUILD_ROOT/usr/sbin/itox @@ -120,38 +123,50 @@ rm -f $RPM_BUILD_ROOT/usr/sbin/xconv.pl mkdir -p $RPM_BUILD_ROOT/etc/sysconfig install -m 644 %SOURCE3 $RPM_BUILD_ROOT/etc/sysconfig/xinetd -%clean -rm -rf $RPM_BUILD_ROOT - %post -if [ $1 = 1 ]; then - /sbin/chkconfig --add xinetd +if [ $1 -eq 1 ] ; then + # Initial installation + /bin/systemctl enable xinetd.service >/dev/null 2>&1 || : fi %preun -if [ $1 = 0 ]; then - /sbin/service xinetd stop > /dev/null 2>&1 - /sbin/chkconfig --del xinetd +if [ $1 -eq 0 ] ; then + # Package removal, not upgrade + /bin/systemctl --no-reload disable xinetd.service > /dev/null 2>&1 || : + /bin/systemctl stop xinetd.service > /dev/null 2>&1 || : fi %postun -if [ $1 -ge 1 ]; then - /sbin/service xinetd condrestart >/dev/null 2>&1 +/bin/systemctl daemon-reload >/dev/null 2>&1 || : +if [ $1 -ge 1 ] ; then + # Package upgrade, not uninstall + /bin/systemctl try-restart xinetd.service >/dev/null 2>&1 || : fi +%triggerun -- xinetd < 2:2.3.14-37 +# Save the current service runlevel info +# User must manually run systemd-sysv-convert --apply xinetd +# to migrate them to systemd targets +/usr/bin/systemd-sysv-convert --save xinetd >/dev/null 2>&1 ||: +/bin/systemctl --no-reload enable xinetd.service >/dev/null 2>&1 ||: + +# Run these because the SysV package being removed won't do them +/sbin/chkconfig --del xinetd >/dev/null 2>&1 || : +/bin/systemctl try-restart xinetd.service >/dev/null 2>&1 || : %files -%defattr(-,root,root) %doc INSTALL CHANGELOG COPYRIGHT README xinetd/sample.conf contrib/empty.conf - %config(noreplace) /etc/xinetd.conf %config(noreplace) /etc/sysconfig/xinetd -/etc/rc.d/init.d/xinetd +%{_unitdir}/xinetd.service %config(noreplace) /etc/xinetd.d/* /usr/sbin/xinetd %{_mandir}/*/* %changelog +* Mon Sep 12 2011 Tom Callaway - 2:2.3.14-37 +- covert to systemd + * Thu Apr 21 2011 Vojtech Vitek (V-Teq) - 2:2.3.14-36 - Fix build warning about "dereferencing type-punned pointer" Related: #695674 From 732b66c35543ad98da6da1a11ce7b6ec9663b8f6 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Mon, 16 Jan 2012 08:36:22 +0100 Subject: [PATCH 02/12] Fix leaking file descriptors Resolves: #702670 --- xinetd-2.3.14-leaking-fds.patch | 52 +++++++++++++++++++++++++++++++++ xinetd.spec | 10 ++++++- 2 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-leaking-fds.patch diff --git a/xinetd-2.3.14-leaking-fds.patch b/xinetd-2.3.14-leaking-fds.patch new file mode 100644 index 0000000..bc1b919 --- /dev/null +++ b/xinetd-2.3.14-leaking-fds.patch @@ -0,0 +1,52 @@ +diff -up xinetd-2.3.14-dist/xinetd/service.c xinetd-2.3.14/xinetd/service.c +--- xinetd-2.3.14-dist/xinetd/service.c 2012-01-11 11:50:43.438650900 +0100 ++++ xinetd-2.3.14/xinetd/service.c 2012-01-16 08:18:09.462620084 +0100 +@@ -88,6 +88,7 @@ struct service *svc_new( struct service_ + CLEAR( *sp ) ; + + SVC_CONF(sp) = scp ; ++ sp->svc_pfd_index = -1; + return( sp ) ; + } + +@@ -346,7 +347,16 @@ status_e svc_activate( struct service *s + ps.rws.pfds_last)*sizeof(struct pollfd)); + ps.rws.pfd_array = tmp; + } +- SVC_POLLFD( sp ) = &ps.rws.pfd_array[ps.rws.pfds_last++] ; ++ if ( sp->svc_pfd_index >= 0 ) ++ { ++ SVC_POLLFD( sp ) = &ps.rws.pfd_array[sp->svc_pfd_index] ; ++ } ++ else ++ { ++ sp->svc_pfd_index = ps.rws.pfds_last ; ++ SVC_POLLFD( sp ) = &ps.rws.pfd_array[ps.rws.pfds_last++] ; ++ } ++ + #endif /* HAVE_POLL */ + + if( SC_IPV4( scp ) ) { +@@ -433,6 +443,11 @@ status_e svc_activate( struct service *s + static void deactivate( const struct service *sp ) + { + (void) Sclose( SVC_FD( sp ) ) ; ++#ifdef HAVE_POLL ++ SVC_FD( sp ) = 0; ++#else ++ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; ++#endif + + #ifdef HAVE_MDNS + xinetd_mdns_deregister(SVC_CONF(sp)); +diff -up xinetd-2.3.14-dist/xinetd/service.h xinetd-2.3.14/xinetd/service.h +--- xinetd-2.3.14-dist/xinetd/service.h 2012-01-11 11:50:43.418650925 +0100 ++++ xinetd-2.3.14/xinetd/service.h 2012-01-16 08:02:59.667553008 +0100 +@@ -47,6 +47,7 @@ struct service + { + state_e svc_state ; + int svc_ref_count ; /* # of pters to this struct */ ++ int svc_pfd_index; /* index of pfd in pfd_array */ + struct service_config *svc_conf ; /* service configuration */ + + #ifdef HAVE_POLL diff --git a/xinetd.spec b/xinetd.spec index 8d6f076..ca07944 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 37%{?dist} +Release: 38%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -43,6 +43,9 @@ Patch17: xinetd-2.3.13-log-crash.patch Patch18: xinetd-2.3.14-rpc-specific-port.patch Patch19: xinetd-2.3.14-signal-log-hang.patch Patch20: xinetd-2.3.14-fix-type-punned-ptr.patch +# Fix leaking file descriptors and pfd_array wasting +# This fixes #702670 +Patch21: xinetd-2.3.14-leaking-fds.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -95,6 +98,7 @@ located in the /etc/xinetd.d directory. %patch18 -p1 -b .rpc-specific-port %patch19 -p1 -b .signal-log-hang %patch20 -p1 -b .fix-type-punned-ptr +%patch21 -p1 -b .leaking-fds aclocal autoconf @@ -164,6 +168,10 @@ fi %{_mandir}/*/* %changelog +* Mon Jan 16 2012 Jan Synáček - 2:2.3.14-38 +- Fix leaking file descriptors +- Resolves: #702670 + * Mon Sep 12 2011 Tom Callaway - 2:2.3.14-37 - covert to systemd From 07d977eb18e48c4a88fa53dfda8df12e9a87e2cf Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Tue, 17 Jan 2012 09:51:04 +0100 Subject: [PATCH 03/12] Fix memory corruption when loading a large number of services Resolves #720390 --- xinetd-2.3.14-many-services.patch | 27 +++++++++++++++++++++++++++ xinetd.spec | 10 +++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-many-services.patch diff --git a/xinetd-2.3.14-many-services.patch b/xinetd-2.3.14-many-services.patch new file mode 100644 index 0000000..8459b6c --- /dev/null +++ b/xinetd-2.3.14-many-services.patch @@ -0,0 +1,27 @@ +--- xinetd-2.3.14-dist/xinetd/defs.h 2012-01-16 12:20:54.739041678 +0100 ++++ xinetd-2.3.14/xinetd/defs.h 2012-01-17 08:06:56.800762230 +0100 +@@ -115,8 +115,9 @@ union xsockaddr { + */ + + #ifdef HAVE_POLL +-#define INIT_POLLFDS 1024 +-#define MAX_POLLFDS 8192 ++#define INIT_POLLFDS 4096 ++/* FIXME: not used */ ++#define MAX_POLLFDS 16384 + #endif + + /* +--- xinetd-2.3.14-dist/xinetd/service.c 2012-01-16 12:20:54.741041678 +0100 ++++ xinetd-2.3.14/xinetd/service.c 2012-01-17 08:07:28.872746991 +0100 +@@ -343,9 +343,9 @@ status_e svc_activate( struct service *s + out_of_memory( func ); + return( FAILED ); + } ++ ps.rws.pfd_array = tmp; + memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- + ps.rws.pfds_last)*sizeof(struct pollfd)); +- ps.rws.pfd_array = tmp; + } + if ( sp->svc_pfd_index >= 0 ) + { diff --git a/xinetd.spec b/xinetd.spec index ca07944..a3d6bcd 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 38%{?dist} +Release: 39%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -46,6 +46,9 @@ Patch20: xinetd-2.3.14-fix-type-punned-ptr.patch # Fix leaking file descriptors and pfd_array wasting # This fixes #702670 Patch21: xinetd-2.3.14-leaking-fds.patch +# Fix memory corruption when loading a large number of services +# This fixes #720390 +Patch22: xinetd-2.3.14-many-services.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -99,6 +102,7 @@ located in the /etc/xinetd.d directory. %patch19 -p1 -b .signal-log-hang %patch20 -p1 -b .fix-type-punned-ptr %patch21 -p1 -b .leaking-fds +%patch22 -p1 -b .many-services aclocal autoconf @@ -168,6 +172,10 @@ fi %{_mandir}/*/* %changelog +* Tue Jan 17 2012 Jan Synáček - 2:2.3.14-39 +- Fix memory corruption when loading a large number of services +- Resolves #720390 + * Mon Jan 16 2012 Jan Synáček - 2:2.3.14-38 - Fix leaking file descriptors - Resolves: #702670 From ad9b4a7dc164eedba426fc85cab6dfb232c24548 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Wed, 18 Jan 2012 14:41:53 +0100 Subject: [PATCH 04/12] Remove realloc inside svc_activate that was causing memory corruption Number of alloc'd file descriptors is now determined by system limits (ulimit -n) Add patch -realloc-remove --- xinetd-2.3.14-realloc-remove.patch | 134 +++++++++++++++++++++++++++++ xinetd.spec | 10 ++- 2 files changed, 143 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-realloc-remove.patch diff --git a/xinetd-2.3.14-realloc-remove.patch b/xinetd-2.3.14-realloc-remove.patch new file mode 100644 index 0000000..6fd1902 --- /dev/null +++ b/xinetd-2.3.14-realloc-remove.patch @@ -0,0 +1,134 @@ +diff -rup xinetd-2.3.14/xinetd/defs.h xinetd-2.3.14-mod/xinetd/defs.h +--- xinetd-2.3.14/xinetd/defs.h 2012-01-18 14:22:20.811100158 +0100 ++++ xinetd-2.3.14-mod/xinetd/defs.h 2012-01-18 13:32:46.000000000 +0100 +@@ -114,11 +114,7 @@ union xsockaddr { + * constants for limiting ps.rws.fd_list + */ + +-#ifdef HAVE_POLL +-#define INIT_POLLFDS 4096 +-/* FIXME: not used */ +-#define MAX_POLLFDS 16384 +-#endif ++#define MAX_FDS 4096 + + /* + * When explicit values are given for enum's, that is because the structures +diff -rup xinetd-2.3.14/xinetd/init.c xinetd-2.3.14-mod/xinetd/init.c +--- xinetd-2.3.14/xinetd/init.c 2012-01-18 14:22:20.779100171 +0100 ++++ xinetd-2.3.14-mod/xinetd/init.c 2012-01-18 14:07:34.000000000 +0100 +@@ -151,7 +151,7 @@ static void set_fd_limit(void) + } + + if ( rl.rlim_max == RLIM_INFINITY ) +- rl.rlim_max = FD_SETSIZE; ++ rl.rlim_max = MAX_FDS; + + ps.ros.max_descriptors = rl.rlim_max ; + #else /* ! RLIMIT_NOFILE */ +@@ -283,12 +283,12 @@ static void init_rw_state( void ) + ps.rws.descriptors_free = ps.ros.max_descriptors - DESCRIPTORS_RESERVED ; + + #ifdef HAVE_POLL +- ps.rws.pfds_allocated = INIT_POLLFDS ; ++ ps.rws.pfds_allocated = ps.ros.max_descriptors ; + ps.rws.pfd_array = (struct pollfd *) + malloc( sizeof( struct pollfd ) * ps.rws.pfds_allocated ) ; + if ( ps.rws.pfd_array == NULL ) + { +- out_of_memory(func); ++ out_of_memory(func) ; + exit( 1 ) ; + } + ps.rws.pfds_last = 0 ; +diff -rup xinetd-2.3.14/xinetd/redirect.c xinetd-2.3.14-mod/xinetd/redirect.c +--- xinetd-2.3.14/xinetd/redirect.c 2012-01-18 14:22:20.780100170 +0100 ++++ xinetd-2.3.14-mod/xinetd/redirect.c 2012-01-18 12:22:08.000000000 +0100 +@@ -149,7 +149,7 @@ void redir_handler( struct server *serp + #ifdef HAVE_POLL + #define REDIR_DESCRIP_INDEX 0 + #define REDIR_SERVER_INDEX 1 +- pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); ++ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),MAX_FDS); + if (pfd_array == NULL) + { + msg( LOG_ERR, func, "Cannot allocate memory for file descriptors!\n"); +diff -rup xinetd-2.3.14/xinetd/service.c xinetd-2.3.14-mod/xinetd/service.c +--- xinetd-2.3.14/xinetd/service.c 2012-01-18 14:22:20.812100157 +0100 ++++ xinetd-2.3.14-mod/xinetd/service.c 2012-01-18 14:07:27.000000000 +0100 +@@ -114,10 +114,6 @@ struct service *svc_make_special( struct + + void svc_free( struct service *sp ) + { +-#ifdef HAVE_POLL +- *SVC_POLLFD( sp ) = ps.rws.pfd_array[--ps.rws.pfds_last] ; +-#endif /* HAVE_POLL */ +- + sc_free( SVC_CONF(sp) ) ; + CLEAR( *sp ) ; + FREE_SVC( sp ) ; +@@ -332,20 +328,10 @@ status_e svc_activate( struct service *s + } + + #ifdef HAVE_POLL +- if ( ps.rws.pfds_last >= ps.rws.pfds_allocated ) ++ if ( ps.rws.descriptors_free <= 0 ) + { +- int pos; +- ps.rws.pfds_allocated += INIT_POLLFDS; +- struct pollfd *tmp = (struct pollfd *)realloc( ps.rws.pfd_array, +- ps.rws.pfds_allocated*sizeof(struct pollfd)); +- if ( tmp == NULL ) +- { +- out_of_memory( func ); +- return( FAILED ); +- } +- ps.rws.pfd_array = tmp; +- memset(&ps.rws.pfd_array[ps.rws.pfds_last], 0, (ps.rws.pfds_allocated- +- ps.rws.pfds_last)*sizeof(struct pollfd)); ++ msg(LOG_ERR, func, "Maximum number of services reached") ; ++ return( FAILED ) ; + } + if ( sp->svc_pfd_index >= 0 ) + { +diff -rup xinetd-2.3.14/xinetd/tcpint.c xinetd-2.3.14-mod/xinetd/tcpint.c +--- xinetd-2.3.14/xinetd/tcpint.c 2012-01-18 14:22:20.782100169 +0100 ++++ xinetd-2.3.14-mod/xinetd/tcpint.c 2012-01-18 13:30:22.000000000 +0100 +@@ -93,7 +93,7 @@ static void si_mux(void) + #ifdef HAVE_POLL + struct pollfd *pfd_array; + int pfds_last = 0; +- int pfds_allocated = INIT_POLLFDS; ++ int pfds_allocated = MAX_FDS; + #else + fd_set socket_mask ; + int mask_max ; +@@ -102,7 +102,7 @@ static void si_mux(void) + const char *func = "si_mux" ; + + #ifdef HAVE_POLL +- pfd_array = calloc(sizeof(struct pollfd),INIT_POLLFDS); ++ pfd_array = calloc(sizeof(struct pollfd),MAX_FDS); + pfd_array[ pfds_last ].fd = INT_REMOTE( ip ) ; + pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; + #else +diff -rup xinetd-2.3.14/xinetd/udpint.c xinetd-2.3.14-mod/xinetd/udpint.c +--- xinetd-2.3.14/xinetd/udpint.c 2012-01-18 14:22:20.783100169 +0100 ++++ xinetd-2.3.14-mod/xinetd/udpint.c 2012-01-18 12:22:00.000000000 +0100 +@@ -103,14 +103,14 @@ static void di_mux(void) + #ifdef HAVE_POLL + struct pollfd *pfd_array; + int pfds_last = 0; +- int pfds_allocated = INIT_POLLFDS; ++ int pfds_allocated = MAX_FDS; + #else + fd_set socket_mask ; + int mask_max ; + #endif + + #ifdef HAVE_POLL +- pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),INIT_POLLFDS); ++ pfd_array = (struct pollfd *)calloc(sizeof(struct pollfd),MAX_FDS); + pfd_array[ pfds_last ].fd = INT_REMOTE( ip ); + pfd_array[ pfds_last++ ].events = POLLIN | POLLOUT; + #else diff --git a/xinetd.spec b/xinetd.spec index a3d6bcd..1f2bd97 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 39%{?dist} +Release: 40%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -49,6 +49,8 @@ Patch21: xinetd-2.3.14-leaking-fds.patch # Fix memory corruption when loading a large number of services # This fixes #720390 Patch22: xinetd-2.3.14-many-services.patch +# Remove realloc of fds that was causing memory corruption +Patch23: xinetd-2.3.14-realloc-remove.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -103,6 +105,7 @@ located in the /etc/xinetd.d directory. %patch20 -p1 -b .fix-type-punned-ptr %patch21 -p1 -b .leaking-fds %patch22 -p1 -b .many-services +%patch23 -p1 -b .realloc-remove aclocal autoconf @@ -172,6 +175,11 @@ fi %{_mandir}/*/* %changelog +* Wed Jan 18 2012 Jan Synáček - 2:2.3.14-40 +- Remove realloc inside svc_activate that was causing memory corruption +- Number of alloc'd file descriptors is now determined by system limits (ulimit -n) +- Add patch -realloc-remove + * Tue Jan 17 2012 Jan Synáček - 2:2.3.14-39 - Fix memory corruption when loading a large number of services - Resolves #720390 From 878d7aad58833c35cbcd6d71c881bf8802563e6c Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Fri, 2 Mar 2012 09:27:04 +0100 Subject: [PATCH 05/12] Fix leaking descriptor when starting a service fails (#795188) Bump revision to match in rawhide --- xinetd-2.3.14-leaking-fds-2.patch | 18 ++++++++++++++++++ xinetd.spec | 9 ++++++++- 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-leaking-fds-2.patch diff --git a/xinetd-2.3.14-leaking-fds-2.patch b/xinetd-2.3.14-leaking-fds-2.patch new file mode 100644 index 0000000..13cb163 --- /dev/null +++ b/xinetd-2.3.14-leaking-fds-2.patch @@ -0,0 +1,18 @@ +--- xinetd-2.3.14/xinetd/service.c 2012-03-02 09:04:28.678977503 +0100 ++++ xinetd-2.3.14-mod/xinetd/service.c 2012-03-02 09:05:42.542941099 +0100 +@@ -372,6 +372,7 @@ status_e svc_activate( struct service *s + if ( set_fd_modes( sp ) == FAILED ) + { + (void) Sclose( SVC_FD(sp) ) ; ++ sp->svc_pfd_index = --ps.rws.pfds_last; + return( FAILED ) ; + } + +@@ -385,6 +386,7 @@ status_e svc_activate( struct service *s + if ( status == FAILED ) + { + (void) Sclose( SVC_FD(sp) ) ; ++ sp->svc_pfd_index = --ps.rws.pfds_last; + return( FAILED ) ; + } + diff --git a/xinetd.spec b/xinetd.spec index 1f2bd97..ef167d5 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 40%{?dist} +Release: 42%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -51,6 +51,8 @@ Patch21: xinetd-2.3.14-leaking-fds.patch Patch22: xinetd-2.3.14-many-services.patch # Remove realloc of fds that was causing memory corruption Patch23: xinetd-2.3.14-realloc-remove.patch +# Fix leaking descriptor when starting a service fails +Patch24: xinetd-2.3.14-leaking-fds-2.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -106,6 +108,7 @@ located in the /etc/xinetd.d directory. %patch21 -p1 -b .leaking-fds %patch22 -p1 -b .many-services %patch23 -p1 -b .realloc-remove +%patch24 -p1 -b .leaking-fds-2 aclocal autoconf @@ -175,6 +178,10 @@ fi %{_mandir}/*/* %changelog +* Fri Mar 02 2012 Jan Synáček - 2:2.3.14-42 +- Fix leaking descriptor when starting a service fails (#795188) +- Bump revision to match in rawhide + * Wed Jan 18 2012 Jan Synáček - 2:2.3.14-40 - Remove realloc inside svc_activate that was causing memory corruption - Number of alloc'd file descriptors is now determined by system limits (ulimit -n) From bee174d3d1e62671fe8aa420124e81fe97b00846 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Mon, 5 Mar 2012 10:58:34 +0100 Subject: [PATCH 06/12] Fix xinetd.service permissions --- xinetd.spec | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xinetd.spec b/xinetd.spec index ef167d5..cfb3503 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 42%{?dist} +Release: 43%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -127,7 +127,7 @@ rm -f contrib/xinetd.d/ftp-sensor %makeinstall DAEMONDIR=$RPM_BUILD_ROOT/usr/sbin MANDIR=$RPM_BUILD_ROOT/%{_mandir} install -m 644 contrib/xinetd.conf $RPM_BUILD_ROOT/etc install -m 644 contrib/xinetd.d/* $RPM_BUILD_ROOT/etc/xinetd.d -install -m 755 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir} +install -m 644 %{SOURCE1} $RPM_BUILD_ROOT%{_unitdir} rm -f $RPM_BUILD_ROOT/%{_mandir}/man8/itox* rm -f $RPM_BUILD_ROOT/usr/sbin/itox @@ -178,6 +178,9 @@ fi %{_mandir}/*/* %changelog +* Mon Mar 05 2012 Jan Synáček - 2:2.3.14-43 +- Fix xinetd.service permissions + * Fri Mar 02 2012 Jan Synáček - 2:2.3.14-42 - Fix leaking descriptor when starting a service fails (#795188) - Bump revision to match in rawhide From ec51496690acdb3041a2d43ea2a5cdb6dce3824c Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Mon, 5 Mar 2012 11:00:21 +0100 Subject: [PATCH 07/12] Remove useless INSTALL from package documentation --- xinetd.spec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/xinetd.spec b/xinetd.spec index cfb3503..c26c9f7 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -169,7 +169,7 @@ fi /bin/systemctl try-restart xinetd.service >/dev/null 2>&1 || : %files -%doc INSTALL CHANGELOG COPYRIGHT README xinetd/sample.conf contrib/empty.conf +%doc CHANGELOG COPYRIGHT README xinetd/sample.conf contrib/empty.conf %config(noreplace) /etc/xinetd.conf %config(noreplace) /etc/sysconfig/xinetd %{_unitdir}/xinetd.service @@ -180,6 +180,7 @@ fi %changelog * Mon Mar 05 2012 Jan Synáček - 2:2.3.14-43 - Fix xinetd.service permissions +- Remove useless INSTALL from package documentation * Fri Mar 02 2012 Jan Synáček - 2:2.3.14-42 - Fix leaking descriptor when starting a service fails (#795188) From 70c932c6efc84607f3910c55d48dd91b27c5e5ae Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Mon, 5 Mar 2012 11:15:31 +0100 Subject: [PATCH 08/12] Implement reload in xinetd.service --- xinetd.service | 1 + xinetd.spec | 1 + 2 files changed, 2 insertions(+) diff --git a/xinetd.service b/xinetd.service index cd8dadc..20efb2c 100644 --- a/xinetd.service +++ b/xinetd.service @@ -7,6 +7,7 @@ Type=forking PIDFile=/var/run/xinetd.pid EnvironmentFile=-/etc/sysconfig/xinetd ExecStart=/usr/sbin/xinetd -stayalive -pidfile /var/run/xinetd.pid "$EXTRAOPTIONS" +ExecReload=/usr/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target diff --git a/xinetd.spec b/xinetd.spec index c26c9f7..ca8b834 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -181,6 +181,7 @@ fi * Mon Mar 05 2012 Jan Synáček - 2:2.3.14-43 - Fix xinetd.service permissions - Remove useless INSTALL from package documentation +- Implement reload in xinetd.service * Fri Mar 02 2012 Jan Synáček - 2:2.3.14-42 - Fix leaking descriptor when starting a service fails (#795188) From e6597959ff886613eafa1d4321ce140562354bf9 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Mon, 5 Mar 2012 15:03:46 +0100 Subject: [PATCH 09/12] Fix: Instances limit in xinetd can be easily bypassed Resolves: #770858 --- xinetd-2.3.14-instances.patch | 22 ++++++++++++++++++++++ xinetd.spec | 9 ++++++++- 2 files changed, 30 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-instances.patch diff --git a/xinetd-2.3.14-instances.patch b/xinetd-2.3.14-instances.patch new file mode 100644 index 0000000..6def242 --- /dev/null +++ b/xinetd-2.3.14-instances.patch @@ -0,0 +1,22 @@ +--- xinetd-2.3.14/xinetd/access.c 2005-10-05 19:15:33.000000000 +0200 ++++ xinetd-2.3.14-mod/xinetd/access.c 2012-03-05 14:54:30.935416926 +0100 +@@ -73,6 +73,7 @@ static void cps_service_restart(void) + unsigned int i; + time_t nowtime; + const char *func = "cps_service_restart"; ++ int rs; + + nowtime = time(NULL); + for( i=0; i < pset_count( SERVICES(ps) ); i++ ) { +@@ -84,8 +85,11 @@ static void cps_service_restart(void) + if( SVC_STATE(sp) == SVC_DISABLED ) { + scp = SVC_CONF( sp ); + if ( SC_TIME_REENABLE(scp) <= nowtime ) { ++ rs = SVC_RUNNING_SERVERS(sp); + /* re-enable the service */ + if( svc_activate(sp) == OK ) { ++ /* remember running servers after restart */ ++ SVC_RUNNING_SERVERS(sp) = rs; + msg(LOG_ERR, func, + "Activating service %s", SC_NAME(scp)); + } else { diff --git a/xinetd.spec b/xinetd.spec index ca8b834..1e3893d 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 43%{?dist} +Release: 44%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -53,6 +53,8 @@ Patch22: xinetd-2.3.14-many-services.patch Patch23: xinetd-2.3.14-realloc-remove.patch # Fix leaking descriptor when starting a service fails Patch24: xinetd-2.3.14-leaking-fds-2.patch +# Fix #770858 - Instances limit in xinetd can be easily bypassed +Patch25: xinetd-2.3.14-instances.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -109,6 +111,7 @@ located in the /etc/xinetd.d directory. %patch22 -p1 -b .many-services %patch23 -p1 -b .realloc-remove %patch24 -p1 -b .leaking-fds-2 +%patch25 -p1 -b .instances aclocal autoconf @@ -178,6 +181,10 @@ fi %{_mandir}/*/* %changelog +* Mon Mar 05 2012 Jan Synáček - 2:2.3.14-44 +- Fix: Instances limit in xinetd can be easily bypassed +- Resolves: #770858 + * Mon Mar 05 2012 Jan Synáček - 2:2.3.14-43 - Fix xinetd.service permissions - Remove useless INSTALL from package documentation From ca3c36aae3335ae7fbd1fbc7019873c772e1bad7 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Tue, 3 Apr 2012 09:35:00 +0200 Subject: [PATCH 10/12] Fix: Service disabled due to bind failure Update patch: xinetd-2.3.14-leaking-fds-2.patch Resolves: #809272 --- xinetd-2.3.14-leaking-fds-2.patch | 18 ------- xinetd-2.3.14-leaking-fds-2a.patch | 41 ++++++++++++++ ...14-retry-svc-activate-in-cps-restart.patch | 54 +++++++++++++++++++ xinetd.spec | 14 +++-- 4 files changed, 106 insertions(+), 21 deletions(-) delete mode 100644 xinetd-2.3.14-leaking-fds-2.patch create mode 100644 xinetd-2.3.14-leaking-fds-2a.patch create mode 100644 xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch diff --git a/xinetd-2.3.14-leaking-fds-2.patch b/xinetd-2.3.14-leaking-fds-2.patch deleted file mode 100644 index 13cb163..0000000 --- a/xinetd-2.3.14-leaking-fds-2.patch +++ /dev/null @@ -1,18 +0,0 @@ ---- xinetd-2.3.14/xinetd/service.c 2012-03-02 09:04:28.678977503 +0100 -+++ xinetd-2.3.14-mod/xinetd/service.c 2012-03-02 09:05:42.542941099 +0100 -@@ -372,6 +372,7 @@ status_e svc_activate( struct service *s - if ( set_fd_modes( sp ) == FAILED ) - { - (void) Sclose( SVC_FD(sp) ) ; -+ sp->svc_pfd_index = --ps.rws.pfds_last; - return( FAILED ) ; - } - -@@ -385,6 +386,7 @@ status_e svc_activate( struct service *s - if ( status == FAILED ) - { - (void) Sclose( SVC_FD(sp) ) ; -+ sp->svc_pfd_index = --ps.rws.pfds_last; - return( FAILED ) ; - } - diff --git a/xinetd-2.3.14-leaking-fds-2a.patch b/xinetd-2.3.14-leaking-fds-2a.patch new file mode 100644 index 0000000..90901e5 --- /dev/null +++ b/xinetd-2.3.14-leaking-fds-2a.patch @@ -0,0 +1,41 @@ +diff -Naur xinetd-2.3.14-dist/xinetd/service.c xinetd-2.3.14/xinetd/service.c +--- xinetd-2.3.14-dist/xinetd/service.c 2012-04-03 08:59:19.000000000 +0200 ++++ xinetd-2.3.14/xinetd/service.c 2012-04-03 09:02:34.588160317 +0200 +@@ -366,12 +366,24 @@ + + msg( LOG_ERR, func, + "socket creation failed (%m). service = %s", SC_ID( scp ) ) ; ++#ifdef HAVE_POLL ++ SVC_EVENTS( sp ) = 0; ++ SVC_FD( sp ) = 0; ++#else ++ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; ++#endif /* HAVE_POLL */ + return( FAILED ) ; + } + + if ( set_fd_modes( sp ) == FAILED ) + { + (void) Sclose( SVC_FD(sp) ) ; ++#ifdef HAVE_POLL ++ SVC_EVENTS( sp ) = 0; ++ SVC_FD( sp ) = 0; ++#else ++ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; ++#endif /* HAVE_POLL */ + return( FAILED ) ; + } + +@@ -385,6 +397,12 @@ + if ( status == FAILED ) + { + (void) Sclose( SVC_FD(sp) ) ; ++#ifdef HAVE_POLL ++ SVC_EVENTS( sp ) = 0; ++ SVC_FD( sp ) = 0; ++#else ++ FD_CLR( SVC_FD( sp ), &ps.rws.socket_mask ) ; ++#endif /* HAVE_POLL */ + return( FAILED ) ; + } + diff --git a/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch b/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch new file mode 100644 index 0000000..7ff5c0b --- /dev/null +++ b/xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch @@ -0,0 +1,54 @@ +diff -Napur xinetd-2.3.14.old/xinetd/access.c xinetd-2.3.14.new/xinetd/access.c +--- xinetd-2.3.14.old/xinetd/access.c 2005-10-05 10:15:33.000000000 -0700 ++++ xinetd-2.3.14.new/xinetd/access.c 2012-02-22 20:12:09.120973124 -0800 +@@ -89,9 +89,20 @@ static void cps_service_restart(void) + msg(LOG_ERR, func, + "Activating service %s", SC_NAME(scp)); + } else { +- msg(LOG_ERR, func, +- "Error activating service %s", +- SC_NAME(scp)) ; ++ /* Try to restart the service */ ++ SVC_ATTEMPTS(sp) += 1; ++ if ( SVC_ATTEMPTS(sp) < MAX_SVC_ATTEMPTS ) { ++ msg(LOG_ERR, func, ++ "Error activating service %s, retrying %d more time(s)...", ++ SC_NAME(scp), ++ MAX_SVC_ATTEMPTS - SVC_ATTEMPTS(sp)); ++ xtimer_add(cps_service_restart, 1); ++ } else { ++ /* Give up */ ++ msg(LOG_ERR, func, ++ "Error activating service %s", ++ SC_NAME(scp)); ++ } + } /* else */ + } + } +diff -Napur xinetd-2.3.14.old/xinetd/service.c xinetd-2.3.14.new/xinetd/service.c +--- xinetd-2.3.14.old/xinetd/service.c 2012-02-22 19:16:56.288912783 -0800 ++++ xinetd-2.3.14.new/xinetd/service.c 2012-02-22 19:25:03.059356909 -0800 +@@ -397,6 +408,7 @@ status_e svc_activate( struct service *s + * Initialize the service data + */ + SVC_RUNNING_SERVERS(sp) = SVC_RETRIES(sp) = 0 ; ++ SVC_ATTEMPTS(sp) = 0; + + if ( SC_MUST_LISTEN( scp ) ) + (void) listen( SVC_FD(sp), LISTEN_BACKLOG ) ; +diff -Napur xinetd-2.3.14.old/xinetd/xconfig.h xinetd-2.3.14.new/xinetd/xconfig.h +--- xinetd-2.3.14.old/xinetd/xconfig.h 2003-02-19 09:29:28.000000000 -0800 ++++ xinetd-2.3.14.new/xinetd/xconfig.h 2012-02-22 19:20:20.360855514 -0800 +@@ -59,6 +59,12 @@ + #define DEFAULT_LOOP_TIME 10 + + /* ++ * The number of times to attempt re-activating a service after being ++ * deactivated due to the above. ++ */ ++#define MAX_SVC_ATTEMPTS 30 ++ ++/* + * Signal-to-action mapping + */ + #ifndef RECONFIG_HARD_SIG diff --git a/xinetd.spec b/xinetd.spec index 1e3893d..b5d7d15 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 44%{?dist} +Release: 45%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -52,9 +52,11 @@ Patch22: xinetd-2.3.14-many-services.patch # Remove realloc of fds that was causing memory corruption Patch23: xinetd-2.3.14-realloc-remove.patch # Fix leaking descriptor when starting a service fails -Patch24: xinetd-2.3.14-leaking-fds-2.patch +Patch24: xinetd-2.3.14-leaking-fds-2a.patch # Fix #770858 - Instances limit in xinetd can be easily bypassed Patch25: xinetd-2.3.14-instances.patch +# Fix #809272 - Service disabled due to bind failure +Patch26: xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -110,8 +112,9 @@ located in the /etc/xinetd.d directory. %patch21 -p1 -b .leaking-fds %patch22 -p1 -b .many-services %patch23 -p1 -b .realloc-remove -%patch24 -p1 -b .leaking-fds-2 +%patch24 -p1 -b .leaking-fds-2a %patch25 -p1 -b .instances +%patch26 -p1 -b .retry-svc-activate aclocal autoconf @@ -181,6 +184,11 @@ fi %{_mandir}/*/* %changelog +* Fri Apr 13 2012 Jan Synáček - 2:2.3.14-45 +- Fix: Service disabled due to bind failure +- Update patch: xinetd-2.3.14-leaking-fds-2.patch +- Resolves: #809272 + * Mon Mar 05 2012 Jan Synáček - 2:2.3.14-44 - Fix: Instances limit in xinetd can be easily bypassed - Resolves: #770858 From 1ec40ce821bd87b41545e719d815b22381fab090 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Fri, 13 Apr 2012 15:24:27 +0200 Subject: [PATCH 11/12] Fix: service file: avoid problems when name resolution is not ready Resolves: #748931 --- xinetd.service | 2 +- xinetd.spec | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/xinetd.service b/xinetd.service index 20efb2c..0322631 100644 --- a/xinetd.service +++ b/xinetd.service @@ -1,6 +1,6 @@ [Unit] Description=Xinetd A Powerful Replacement For Inetd -After=syslog.target network.target +After=syslog.target network.target NetworkManager-wait-online.service [Service] Type=forking diff --git a/xinetd.spec b/xinetd.spec index b5d7d15..01d8b8a 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 45%{?dist} +Release: 46%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -184,6 +184,10 @@ fi %{_mandir}/*/* %changelog +* Fri Apr 13 2012 Jan Synáček - 2:2.3.14-46 +- Fix: service file: avoid problems when name resolution is not ready +- Resolves: #748931 + * Fri Apr 13 2012 Jan Synáček - 2:2.3.14-45 - Fix: Service disabled due to bind failure - Update patch: xinetd-2.3.14-leaking-fds-2.patch From b073092c744bb41af14ff5a55cfa195499477802 Mon Sep 17 00:00:00 2001 From: Jan Synacek Date: Thu, 17 May 2012 08:50:00 +0200 Subject: [PATCH 12/12] Fix tcpmux security Resolves: #820318 (CVE-2012-0862) --- xinetd-2.3.14-tcpmux-nonmux-security.patch | 49 ++++++++++++++++++++++ xinetd.spec | 9 +++- 2 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 xinetd-2.3.14-tcpmux-nonmux-security.patch diff --git a/xinetd-2.3.14-tcpmux-nonmux-security.patch b/xinetd-2.3.14-tcpmux-nonmux-security.patch new file mode 100644 index 0000000..115ae81 --- /dev/null +++ b/xinetd-2.3.14-tcpmux-nonmux-security.patch @@ -0,0 +1,49 @@ +--- xinetd-2.3.14/xinetd/builtins.c.old 2012-02-15 16:29:48.263844700 -0600 ++++ xinetd-2.3.14/xinetd/builtins.c 2012-02-15 16:37:52.209594438 -0600 +@@ -560,17 +560,16 @@ + /* Found the pointer. Validate its type. + */ + scp = SVC_CONF( sp ); +-/* +- if ( ! SVC_IS_MUXCLIENT( sp ) ) ++ ++ if ( ! SVC_IS_MUXCLIENT( sp ) && ! SVC_IS_MUXPLUSCLIENT( sp ) ) + { + if ( debug.on ) + { + msg(LOG_DEBUG, "tcpmux_handler", "Non-tcpmux service name: %s.", + svc_name); + } +- exit(0); ++ continue; + } +-*/ + + /* Send the accept string if we're a PLUS (+) client. + */ +@@ -597,6 +596,19 @@ + msg(LOG_DEBUG, "tcpmux_handler", "Service name %s not found.", + svc_name); + } ++ ++ /* If a service was not found, we should say so. */ ++ if ( Swrite( descriptor, TCPMUX_NOT_FOUND, sizeof( TCPMUX_NOT_FOUND ) ) != ++ sizeof ( TCPMUX_NOT_FOUND ) ) ++ { ++ msg(LOG_ERR, "tcpmux_handler", "Not found write failed for %s.", ++ svc_name); ++ exit(0); ++ } ++ ++ /* Flush and exit, nothing to do */ ++ Sflush( descriptor ); ++ Sclose( descriptor ); + exit(0); + } + +--- xinetd-2.3.14/xinetd/service.h.old 2012-02-15 16:29:34.186942629 -0600 ++++ xinetd-2.3.14/xinetd/service.h 2012-02-15 16:30:19.009446694 -0600 +@@ -114,2 +114,3 @@ + #define TCPMUX_ACK "+Go\r\n" ++#define TCPMUX_NOT_FOUND "-Service name not found\r\n" + /* diff --git a/xinetd.spec b/xinetd.spec index 01d8b8a..e59609d 100644 --- a/xinetd.spec +++ b/xinetd.spec @@ -1,7 +1,7 @@ Summary: A secure replacement for inetd Name: xinetd Version: 2.3.14 -Release: 46%{?dist} +Release: 47%{?dist} License: xinetd Group: System Environment/Daemons Epoch: 2 @@ -57,6 +57,8 @@ Patch24: xinetd-2.3.14-leaking-fds-2a.patch Patch25: xinetd-2.3.14-instances.patch # Fix #809272 - Service disabled due to bind failure Patch26: xinetd-2.3.14-retry-svc-activate-in-cps-restart.patch +# CVE-2012-0862 +Patch27: xinetd-2.3.14-tcpmux-nonmux-security.patch BuildRequires: autoconf, automake BuildRequires: libselinux-devel >= 1.30 @@ -115,6 +117,7 @@ located in the /etc/xinetd.d directory. %patch24 -p1 -b .leaking-fds-2a %patch25 -p1 -b .instances %patch26 -p1 -b .retry-svc-activate +%patch27 -p1 -b .tcpmux-security aclocal autoconf @@ -184,6 +187,10 @@ fi %{_mandir}/*/* %changelog +* Thu May 17 2012 Jan Synáček - 2:2.3.14-47 +- Fix tcpmux security +- Resolves: #820318 (CVE-2012-0862) + * Fri Apr 13 2012 Jan Synáček - 2:2.3.14-46 - Fix: service file: avoid problems when name resolution is not ready - Resolves: #748931