diff --git a/dhcp-4.0.0-discover-file-handle.patch b/dhcp-4.0.0-discover-file-handle.patch deleted file mode 100644 index 33eae93..0000000 --- a/dhcp-4.0.0-discover-file-handle.patch +++ /dev/null @@ -1,29 +0,0 @@ -diff -up dhcp-4.0.0/common/discover.c.fp dhcp-4.0.0/common/discover.c ---- dhcp-4.0.0/common/discover.c.fp 2008-01-15 10:25:45.000000000 -1000 -+++ dhcp-4.0.0/common/discover.c 2008-01-15 10:27:08.000000000 -1000 -@@ -461,6 +461,12 @@ next_iface4(struct iface_info *info, int - char *name; - struct ifreq tmp; - -+ if (!ifaces->fp) { -+ log_error("Error reading interface information"); -+ *err = 1; -+ return 0; -+ } -+ - /* - * Loop exits when we find an interface that has an address, or - * when we run out of interfaces. -@@ -587,6 +593,12 @@ next_iface6(struct iface_info *info, int - struct sockaddr_in6 addr; - struct ifreq tmp; - -+ if (!ifaces->fp6) { -+ log_error("Error reading interface information"); -+ *err = 1; -+ return 0; -+ } -+ - do { - /* - * Read the next line in the file. diff --git a/dhcp-4.0.0-parser.patch b/dhcp-4.0.0-parser.patch new file mode 100644 index 0000000..b38c895 --- /dev/null +++ b/dhcp-4.0.0-parser.patch @@ -0,0 +1,18 @@ +diff -up dhcp-4.0.0/common/conflex.c.parse dhcp-4.0.0/common/conflex.c +--- dhcp-4.0.0/common/conflex.c.parse 2008-01-16 15:26:09.000000000 -1000 ++++ dhcp-4.0.0/common/conflex.c 2008-01-16 16:02:48.000000000 -1000 +@@ -182,8 +182,12 @@ static int get_char (cfile) + c = EOF; + } + } else { +- c = cfile->inbuf [cfile->bufix]; +- cfile->bufix++; ++ if (strlen(cfile->inbuf) >= (cfile->bufix + 1)) { ++ c = EOF; ++ } else { ++ c = cfile->inbuf [cfile->bufix]; ++ cfile->bufix++; ++ } + } + + if (!cfile->ugflag) { diff --git a/dhcp.spec b/dhcp.spec index d69cbf5..64837b2 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -4,7 +4,7 @@ Summary: DHCP (Dynamic Host Configuration Protocol) server and relay agent Name: dhcp Version: 4.0.0 -Release: 3%{?dist} +Release: 4%{?dist} # NEVER CHANGE THE EPOCH on this package. The previous maintainer made # incorrect use of the epoch and that's why it is at 12 now. It should have # never been used, but it was. So we are stuck with it. @@ -42,7 +42,7 @@ Patch13: %{name}-4.0.0-dhclient-anycast.patch Patch14: %{name}-4.0.0-manpages.patch Patch15: %{name}-4.0.0-paths.patch Patch16: %{name}-4.0.0-libdhcp4client.patch -Patch17: %{name}-4.0.0-discover-file-handle.patch +Patch17: %{name}-4.0.0-parser.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: autoconf @@ -189,7 +189,7 @@ client library. # Add the libdhcp4client target (library version of dhclient) %patch16 -p1 -# Check file handle passed to fgets() in common/discover.c +# Fix parsing errors %patch17 -p1 # Copy in documentation and example scripts for LDAP patch to dhcpd @@ -235,7 +235,7 @@ automake --foreign --add-missing --copy %build CFLAGS="%{optflags} -fPIC" \ %configure \ - --enable-dhcpv6 \ + --disable-dhcpv6 \ --with-srv-lease-file=%{_localstatedir}/lib/dhcpd/dhcpd.leases \ --with-cli-lease-file=%{_localstatedir}/lib/dhclient/dhclient.leases \ --with-srv-pid-file=%{_localstatedir}/run/dhcpd.pid \ @@ -404,6 +404,10 @@ fi %{_libdir}/libdhcp4client.so %changelog +* Wed Jan 16 2008 David Cantrell - 12:4.0.0-4 +- Fix dhclient.lease file parsing problems (#428785) +- Disable IPv6 support for now as we already ship dhcpv6 (#428987) + * Tue Jan 15 2008 David Cantrell - 12:4.0.0-3 - Fix segfault in next_iface4() and next_iface6() (#428870)