- Fix dhclient.lease file parsing problems (#428785)

- Disable IPv6 support for now as we already ship dhcpv6 (#428987)
This commit is contained in:
David Cantrell 2008-01-17 02:23:35 +00:00
parent 95192934fb
commit a58f607ec1
3 changed files with 26 additions and 33 deletions

View File

@ -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.

18
dhcp-4.0.0-parser.patch Normal file
View File

@ -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) {

View File

@ -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 <dcantrell@redhat.com> - 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 <dcantrell@redhat.com> - 12:4.0.0-3
- Fix segfault in next_iface4() and next_iface6() (#428870)