From a4249d07d39dd08086b1a36d975baff1510b82b7 Mon Sep 17 00:00:00 2001 From: Daniel Williams Date: Jul 02 2007 19:03:32 +0000 Subject: - Fix double-free bug when closing daemon file descriptor (avahi.org #148) --- diff --git a/libdaemon-0.11-stdarg-fix.patch b/libdaemon-0.11-stdarg-fix.patch new file mode 100644 index 0000000..782c433 --- /dev/null +++ b/libdaemon-0.11-stdarg-fix.patch @@ -0,0 +1,56 @@ +--- libdaemon-0.11/libdaemon/dfork.c.debug 2007-06-11 11:36:11.000000000 -0400 ++++ libdaemon-0.11/libdaemon/dfork.c 2007-07-02 14:49:35.000000000 -0400 +@@ -354,31 +354,38 @@ + + int daemon_close_all(int except_fd, ...) { + va_list original_ap, ap; +- int n, i, r; +- int *p; ++ int n = 0, i = 0, r = -1; ++ int *p = NULL; + +- va_start(original_ap, except_fd); +- va_copy(ap, original_ap); ++ if (except_fd >= 0) { ++ va_start(original_ap, except_fd); ++ va_copy(ap, original_ap); + +- for (n = 0; va_arg(ap, int) >= 0; n++) +- ; ++ for (n = 0; va_arg(ap, int) >= 0; n++) ++ ; + +- va_end(ap); +- +- if (!(p = malloc(sizeof(int) * (n+1)))) { +- va_end(original_ap); +- return -1; ++ va_end(ap); + } + +- i = 0; +- while ((p[i++] = va_arg(original_ap, int)) >= 0) +- ; ++ if (!(p = malloc(sizeof(int) * (n+2)))) ++ goto out; ++ ++ p[i++] = except_fd; ++ ++ if (except_fd >= 0) { ++ i = 1; ++ while ((p[i++] = va_arg(original_ap, int)) >= 0) ++ ; ++ } + + p[i] = -1; + + r = daemon_close_allv(p); ++ ++out: ++ if (except_fd >= 0) ++ va_end(original_ap); + free(p); +- + return r; + } + diff --git a/libdaemon.spec b/libdaemon.spec index 523fd48..915b8ba 100644 --- a/libdaemon.spec +++ b/libdaemon.spec @@ -1,6 +1,6 @@ Name: libdaemon Version: 0.11 -Release: 1%{?dist} +Release: 2%{?dist} Summary: library for writing UNIX daemons Group: System Environment/Libraries @@ -8,6 +8,7 @@ License: GPL URL: http://www.stud.uni-hamburg.de/users/lennart/projects/libdaemon Source0: %{name}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) +Patch0: libdaemon-0.11-stdarg-fix.patch # Requires lynx to build the docs BuildRequires: lynx @@ -36,6 +37,7 @@ necessary for developing programs using libdaemon. %prep %setup -q +%patch0 -p1 -b .stdarg-fix %build %configure --disable-static @@ -68,6 +70,9 @@ rm -rf $RPM_BUILD_ROOT %{_libdir}/pkgconfig/*.pc %changelog +* Mon Jul 2 2007 Dan Williams - 0.11-2 +- Fix double-free bug when closing daemon file descriptor (avahi.org #148) + * Fri Jun 22 2007 Martin Bacovsky - 0.11-1 - Upgrade to new upstream version 0.11