From 030991fd0d068a6a92f713442d22e1ed8b8df4b7 Mon Sep 17 00:00:00 2001 From: Jiri Popelka Date: Fri, 17 Jun 2011 14:38:34 +0200 Subject: [PATCH] Removed upstream-merged IFNAMSIZ.patch Polished patches according to results from static analysis of code. --- dhcp-4.2.0-IFNAMSIZ.patch | 12 ---- ...line.patch => dhcp-4.2.1-sendDecline.patch | 24 ++++---- ...sum.patch => dhcp-4.2.1-xen-checksum.patch | 59 ++++++++++--------- dhcp.spec | 27 ++++----- 4 files changed, 54 insertions(+), 68 deletions(-) delete mode 100644 dhcp-4.2.0-IFNAMSIZ.patch rename dhcp-4.2.0-sendDecline.patch => dhcp-4.2.1-sendDecline.patch (89%) rename dhcp-4.2.0-xen-checksum.patch => dhcp-4.2.1-xen-checksum.patch (77%) diff --git a/dhcp-4.2.0-IFNAMSIZ.patch b/dhcp-4.2.0-IFNAMSIZ.patch deleted file mode 100644 index b8437da..0000000 --- a/dhcp-4.2.0-IFNAMSIZ.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up dhcp-4.2.0/server/dhcpd.c.ifnamsiz dhcp-4.2.0/server/dhcpd.c ---- dhcp-4.2.0/server/dhcpd.c.ifnamsiz 2010-07-21 14:31:39.000000000 +0200 -+++ dhcp-4.2.0/server/dhcpd.c 2010-07-21 16:05:49.000000000 +0200 -@@ -409,7 +409,7 @@ main(int argc, char **argv) { - log_fatal ("Insufficient memory to %s %s: %s", - "record interface", argv [i], - isc_result_totext (result)); -- strcpy (tmp -> name, argv [i]); -+ strncpy (tmp -> name, argv [i], sizeof (tmp -> name)); - if (interfaces) { - interface_reference (&tmp -> next, - interfaces, MDL); diff --git a/dhcp-4.2.0-sendDecline.patch b/dhcp-4.2.1-sendDecline.patch similarity index 89% rename from dhcp-4.2.0-sendDecline.patch rename to dhcp-4.2.1-sendDecline.patch index 5f04b6b..b2fa4af 100644 --- a/dhcp-4.2.0-sendDecline.patch +++ b/dhcp-4.2.1-sendDecline.patch @@ -1,6 +1,6 @@ -diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c ---- dhcp-4.2.0/client/dhc6.c.sendDecline 2009-11-20 02:48:58.000000000 +0100 -+++ dhcp-4.2.0/client/dhc6.c 2010-07-21 16:18:51.000000000 +0200 +diff -up dhcp-4.2.1-P1/client/dhc6.c.sendDecline dhcp-4.2.1-P1/client/dhc6.c +--- dhcp-4.2.1-P1/client/dhc6.c.sendDecline 2010-09-10 22:27:11.000000000 +0200 ++++ dhcp-4.2.1-P1/client/dhc6.c 2011-06-17 14:19:48.992099868 +0200 @@ -95,6 +95,8 @@ void do_select6(void *input); void do_refresh6(void *input); static void do_release6(void *input); @@ -10,7 +10,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c static void start_informed(struct client_state *client); void informed_handler(struct packet *packet, struct client_state *client); void bound_handler(struct packet *packet, struct client_state *client); -@@ -2140,6 +2142,7 @@ start_release6(struct client_state *clie +@@ -2075,6 +2077,7 @@ start_release6(struct client_state *clie cancel_timeout(do_select6, client); cancel_timeout(do_refresh6, client); cancel_timeout(do_release6, client); @@ -18,7 +18,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c client->state = S_STOPPED; /* -@@ -2790,6 +2793,7 @@ dhc6_check_reply(struct client_state *cl +@@ -2708,6 +2711,7 @@ dhc6_check_reply(struct client_state *cl break; case S_STOPPED: @@ -26,7 +26,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c action = dhc6_stop_action; break; -@@ -2891,6 +2895,7 @@ dhc6_check_reply(struct client_state *cl +@@ -2809,6 +2813,7 @@ dhc6_check_reply(struct client_state *cl break; case S_STOPPED: @@ -34,7 +34,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c /* Nothing critical to do at this stage. */ break; -@@ -3933,17 +3938,23 @@ reply_handler(struct packet *packet, str +@@ -3799,17 +3804,23 @@ reply_handler(struct packet *packet, str cancel_timeout(do_select6, client); cancel_timeout(do_refresh6, client); cancel_timeout(do_release6, client); @@ -66,7 +66,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c return; } -@@ -4470,7 +4481,11 @@ start_bound(struct client_state *client) +@@ -4336,7 +4347,11 @@ start_bound(struct client_state *client) oldia, oldaddr); dhc6_marshall_values("new_", client, lease, ia, addr); @@ -79,7 +79,7 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c } /* XXX: maybe we should loop on the old values instead? */ -@@ -4516,6 +4531,151 @@ start_bound(struct client_state *client) +@@ -4382,6 +4397,149 @@ start_bound(struct client_state *client) dhc6_check_times(client); } @@ -220,10 +220,8 @@ diff -up dhcp-4.2.0/client/dhc6.c.sendDecline dhcp-4.2.0/client/dhc6.c + return; + +decline_done: -+ if (client->active_lease != NULL) { -+ dhc6_lease_destroy(&client->active_lease, MDL); -+ client->active_lease = NULL; -+ } ++ dhc6_lease_destroy(&client->active_lease, MDL); ++ client->active_lease = NULL; + start_init6(client); + return; +} diff --git a/dhcp-4.2.0-xen-checksum.patch b/dhcp-4.2.1-xen-checksum.patch similarity index 77% rename from dhcp-4.2.0-xen-checksum.patch rename to dhcp-4.2.1-xen-checksum.patch index 2e2dc8d..65ffca9 100644 --- a/dhcp-4.2.0-xen-checksum.patch +++ b/dhcp-4.2.1-xen-checksum.patch @@ -1,6 +1,6 @@ -diff -up dhcp-4.2.0/common/bpf.c.xen dhcp-4.2.0/common/bpf.c ---- dhcp-4.2.0/common/bpf.c.xen 2009-11-20 02:48:59.000000000 +0100 -+++ dhcp-4.2.0/common/bpf.c 2010-07-21 13:51:24.000000000 +0200 +diff -up dhcp-4.2.1-P1/common/bpf.c.xen dhcp-4.2.1-P1/common/bpf.c +--- dhcp-4.2.1-P1/common/bpf.c.xen 2009-11-20 02:48:59.000000000 +0100 ++++ dhcp-4.2.1-P1/common/bpf.c 2011-06-17 13:33:18.398055078 +0200 @@ -485,7 +485,7 @@ ssize_t receive_packet (interface, buf, offset = decode_udp_ip_header (interface, interface -> rbuf, @@ -10,10 +10,10 @@ diff -up dhcp-4.2.0/common/bpf.c.xen dhcp-4.2.0/common/bpf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) { -diff -up dhcp-4.2.0/common/dlpi.c.xen dhcp-4.2.0/common/dlpi.c ---- dhcp-4.2.0/common/dlpi.c.xen 2009-11-20 02:49:00.000000000 +0100 -+++ dhcp-4.2.0/common/dlpi.c 2010-07-21 13:51:24.000000000 +0200 -@@ -694,7 +694,7 @@ ssize_t receive_packet (interface, buf, +diff -up dhcp-4.2.1-P1/common/dlpi.c.xen dhcp-4.2.1-P1/common/dlpi.c +--- dhcp-4.2.1-P1/common/dlpi.c.xen 2011-02-18 20:16:04.000000000 +0100 ++++ dhcp-4.2.1-P1/common/dlpi.c 2011-06-17 13:33:18.398055078 +0200 +@@ -695,7 +695,7 @@ ssize_t receive_packet (interface, buf, length -= offset; #endif offset = decode_udp_ip_header (interface, dbuf, bufix, @@ -22,9 +22,9 @@ diff -up dhcp-4.2.0/common/dlpi.c.xen dhcp-4.2.0/common/dlpi.c /* * If the IP or UDP checksum was bad, skip the packet... -diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c ---- dhcp-4.2.0/common/lpf.c.xen 2009-07-23 20:52:19.000000000 +0200 -+++ dhcp-4.2.0/common/lpf.c 2010-07-21 13:51:24.000000000 +0200 +diff -up dhcp-4.2.1-P1/common/lpf.c.xen dhcp-4.2.1-P1/common/lpf.c +--- dhcp-4.2.1-P1/common/lpf.c.xen 2009-07-23 20:52:19.000000000 +0200 ++++ dhcp-4.2.1-P1/common/lpf.c 2011-06-17 13:37:31.611730430 +0200 @@ -29,18 +29,33 @@ #include "dhcpd.h" #if defined (USE_LPF_SEND) || defined (USE_LPF_RECEIVE) @@ -76,12 +76,13 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c htons((short)ETH_P_ALL))) < 0) { if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT || -@@ -84,11 +103,16 @@ int if_register_lpf (info) +@@ -84,11 +103,17 @@ int if_register_lpf (info) log_fatal ("Open a socket for LPF: %m"); } + memset (&ifr, 0, sizeof ifr); + strncpy (ifr.ifr_name, (const char *)info -> ifp, sizeof ifr.ifr_name); ++ ifr.ifr_name[IFNAMSIZ-1] = '\0'; + if (ioctl (sock, SIOCGIFINDEX, &ifr)) + log_fatal ("Failed to get interface index: %m"); + @@ -96,7 +97,7 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c if (errno == ENOPROTOOPT || errno == EPROTONOSUPPORT || errno == ESOCKTNOSUPPORT || errno == EPFNOSUPPORT || errno == EAFNOSUPPORT || errno == EINVAL) { -@@ -170,9 +194,18 @@ static void lpf_gen_filter_setup (struct +@@ -170,9 +195,18 @@ static void lpf_gen_filter_setup (struct void if_register_receive (info) struct interface_info *info; { @@ -115,7 +116,7 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c #if defined (HAVE_TR_SUPPORT) if (info -> hw_address.hbuf [0] == HTYPE_IEEE802) lpf_tr_filter_setup (info); -@@ -294,7 +327,6 @@ ssize_t send_packet (interface, packet, +@@ -294,7 +328,6 @@ ssize_t send_packet (interface, packet, double hh [16]; double ih [1536 / sizeof (double)]; unsigned char *buf = (unsigned char *)ih; @@ -123,7 +124,7 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c int result; int fudge; -@@ -315,15 +347,7 @@ ssize_t send_packet (interface, packet, +@@ -315,15 +348,7 @@ ssize_t send_packet (interface, packet, (unsigned char *)raw, len); memcpy (buf + ibufp, raw, len); @@ -140,7 +141,7 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c if (result < 0) log_error ("send_packet: %m"); return result; -@@ -340,14 +364,35 @@ ssize_t receive_packet (interface, buf, +@@ -340,14 +365,35 @@ ssize_t receive_packet (interface, buf, { int length = 0; int offset = 0; @@ -177,7 +178,7 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c bufix = 0; /* Decode the physical header... */ offset = decode_hw_header (interface, ibuf, bufix, hfrom); -@@ -364,7 +409,7 @@ ssize_t receive_packet (interface, buf, +@@ -364,7 +410,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ offset = decode_udp_ip_header (interface, ibuf, bufix, from, @@ -186,9 +187,9 @@ diff -up dhcp-4.2.0/common/lpf.c.xen dhcp-4.2.0/common/lpf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.0/common/nit.c.xen dhcp-4.2.0/common/nit.c ---- dhcp-4.2.0/common/nit.c.xen 2009-11-20 02:49:01.000000000 +0100 -+++ dhcp-4.2.0/common/nit.c 2010-07-21 13:51:24.000000000 +0200 +diff -up dhcp-4.2.1-P1/common/nit.c.xen dhcp-4.2.1-P1/common/nit.c +--- dhcp-4.2.1-P1/common/nit.c.xen 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.1-P1/common/nit.c 2011-06-17 13:33:18.414054663 +0200 @@ -369,7 +369,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ @@ -198,9 +199,9 @@ diff -up dhcp-4.2.0/common/nit.c.xen dhcp-4.2.0/common/nit.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.0/common/packet.c.xen dhcp-4.2.0/common/packet.c ---- dhcp-4.2.0/common/packet.c.xen 2009-07-23 20:52:20.000000000 +0200 -+++ dhcp-4.2.0/common/packet.c 2010-07-21 13:51:24.000000000 +0200 +diff -up dhcp-4.2.1-P1/common/packet.c.xen dhcp-4.2.1-P1/common/packet.c +--- dhcp-4.2.1-P1/common/packet.c.xen 2009-07-23 20:52:20.000000000 +0200 ++++ dhcp-4.2.1-P1/common/packet.c 2011-06-17 13:33:18.414054663 +0200 @@ -211,7 +211,7 @@ ssize_t decode_udp_ip_header(struct interface_info *interface, unsigned char *buf, unsigned bufix, @@ -219,9 +220,9 @@ diff -up dhcp-4.2.0/common/packet.c.xen dhcp-4.2.0/common/packet.c udp_packets_bad_checksum++; if (udp_packets_seen > 4 && (udp_packets_seen / udp_packets_bad_checksum) < 2) { -diff -up dhcp-4.2.0/common/upf.c.xen dhcp-4.2.0/common/upf.c ---- dhcp-4.2.0/common/upf.c.xen 2009-11-20 02:49:01.000000000 +0100 -+++ dhcp-4.2.0/common/upf.c 2010-07-21 13:51:24.000000000 +0200 +diff -up dhcp-4.2.1-P1/common/upf.c.xen dhcp-4.2.1-P1/common/upf.c +--- dhcp-4.2.1-P1/common/upf.c.xen 2009-11-20 02:49:01.000000000 +0100 ++++ dhcp-4.2.1-P1/common/upf.c 2011-06-17 13:33:18.418054566 +0200 @@ -320,7 +320,7 @@ ssize_t receive_packet (interface, buf, /* Decode the IP and UDP headers... */ @@ -231,10 +232,10 @@ diff -up dhcp-4.2.0/common/upf.c.xen dhcp-4.2.0/common/upf.c /* If the IP or UDP checksum was bad, skip the packet... */ if (offset < 0) -diff -up dhcp-4.2.0/includes/dhcpd.h.xen dhcp-4.2.0/includes/dhcpd.h ---- dhcp-4.2.0/includes/dhcpd.h.xen 2010-07-21 13:38:31.000000000 +0200 -+++ dhcp-4.2.0/includes/dhcpd.h 2010-07-21 13:51:24.000000000 +0200 -@@ -2773,7 +2773,7 @@ ssize_t decode_hw_header PROTO ((struct +diff -up dhcp-4.2.1-P1/includes/dhcpd.h.xen dhcp-4.2.1-P1/includes/dhcpd.h +--- dhcp-4.2.1-P1/includes/dhcpd.h.xen 2011-06-17 13:33:18.382055486 +0200 ++++ dhcp-4.2.1-P1/includes/dhcpd.h 2011-06-17 13:33:18.420054516 +0200 +@@ -2776,7 +2776,7 @@ ssize_t decode_hw_header PROTO ((struct unsigned, struct hardware *)); ssize_t decode_udp_ip_header PROTO ((struct interface_info *, unsigned char *, unsigned, struct sockaddr_in *, diff --git a/dhcp.spec b/dhcp.spec index bf5245b..5b2dbe9 100644 --- a/dhcp.spec +++ b/dhcp.spec @@ -16,7 +16,7 @@ Summary: Dynamic host configuration protocol software Name: dhcp Version: 4.2.1 -Release: 11.%{patchver}%{?dist} +Release: 12.%{patchver}%{?dist} # NEVER CHANGE THE EPOCH on this package. The previous maintainer (prior to # dcantrell maintaining the package) made incorrect use of the epoch and # that's why it is at 12 now. It should have never been used, but it was. @@ -45,20 +45,19 @@ Patch3: dhcp-4.2.0-dhclient-decline-backoff.patch Patch4: dhcp-4.2.0-unicast-bootp.patch Patch6: dhcp-4.2.0-dhclient-usage.patch Patch7: dhcp-4.2.0-default-requested-options.patch -Patch8: dhcp-4.2.0-xen-checksum.patch +Patch8: dhcp-4.2.1-xen-checksum.patch Patch10: dhcp-4.2.1-manpages.patch Patch11: dhcp-4.2.0-paths.patch Patch12: dhcp-4.2.0-CLOEXEC.patch Patch13: dhcp-4.2.0-inherit-leases.patch Patch14: dhcp-4.2.0-garbage-chars.patch Patch15: dhcp-4.2.0-missing-ipv6-not-fatal.patch -Patch16: dhcp-4.2.0-IFNAMSIZ.patch Patch17: dhcp-4.2.0-add_timeout_when_NULL.patch Patch18: dhcp-4.2.1-64_bit_lease_parse.patch Patch19: dhcp-4.2.1-capability.patch Patch20: dhcp-4.2.0-logpid.patch Patch21: dhcp-4.2.0-UseMulticast.patch -Patch22: dhcp-4.2.0-sendDecline.patch +Patch22: dhcp-4.2.1-sendDecline.patch Patch23: dhcp-4.2.1-retransmission.patch Patch24: dhcp-4.2.0-initialization-delay.patch Patch25: dhcp-4.2.0-rfc3442-classless-static-routes.patch @@ -244,10 +243,6 @@ rm bind/bind.tar.gz # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #19367]) %patch15 -p1 -b .noipv6 -# Read only up to IFNAMSIZ characters for the interface name in dhcpd (#441524) -# (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #19617]) -%patch16 -p1 -b .ifnamsiz - # Handle cases in add_timeout() where the function is called with a NULL # value for the 'when' parameter # (Submitted to dhcp-bugs@isc.org - [ISC-Bugs #19867]) @@ -393,17 +388,17 @@ CFLAGS="%{optflags} -fno-strict-aliasing -D_GNU_SOURCE" \ %{__mv} %{buildroot}%{_sbindir}/dhclient %{buildroot}/sbin/dhclient %{__install} -p -m 0755 client/scripts/linux %{buildroot}/sbin/dhclient-script -# Install init scripts +# Install legacy SysV initscripts %{__mkdir} -p %{buildroot}%{_initddir} %{__install} -p -m 0755 %{SOURCE1} %{buildroot}%{_initddir}/dhcpd %{__install} -p -m 0755 %{SOURCE2} %{buildroot}%{_initddir}/dhcpd6 %{__install} -p -m 0755 %{SOURCE3} %{buildroot}%{_initddir}/dhcrelay -# install systemd initscripts -mkdir -p %{buildroot}/lib/systemd/system/ -install -m 644 %{SOURCE9} %{buildroot}/lib/systemd/system/dhcpd.service -install -m 644 %{SOURCE10} %{buildroot}/lib/systemd/system/dhcpd6.service -install -m 644 %{SOURCE11} %{buildroot}/lib/systemd/system/dhcrelay.service +# Install systemd unit files +mkdir -p %{buildroot}%{_unitdir} +install -m 644 %{SOURCE9} %{buildroot}%{_unitdir} +install -m 644 %{SOURCE10} %{buildroot}%{_unitdir} +install -m 644 %{SOURCE11} %{buildroot}%{_unitdir} # Start empty lease databases %{__mkdir} -p %{buildroot}%{_localstatedir}/lib/dhcpd/ @@ -656,6 +651,10 @@ fi %{_initddir}/dhcrelay %changelog +* Fri Jun 17 2011 Jiri Popelka - 12:4.2.1-12.P1 +- Removed upstream-merged IFNAMSIZ.patch +- Polished patches according to results from static analysis of code. + * Thu Jun 16 2011 Jiri Popelka - 12:4.2.1-11.P1 - Add triggerpostun scriptlet tied to dhcp-sysvinit - Make it possible to build without downstream patches (Kamil Dudka)