From f23c0d737edc7040597ca3a327737d405f009ef0 Mon Sep 17 00:00:00 2001 From: Alessio Sergi Date: Sat, 18 Jun 2016 20:01:56 +0200 Subject: [PATCH] dhcpcd: update to 6.11.1 --- .../patches/fix-truncated-packets.patch | 77 ------------------- srcpkgs/dhcpcd/template | 6 +- 2 files changed, 3 insertions(+), 80 deletions(-) delete mode 100644 srcpkgs/dhcpcd/patches/fix-truncated-packets.patch diff --git a/srcpkgs/dhcpcd/patches/fix-truncated-packets.patch b/srcpkgs/dhcpcd/patches/fix-truncated-packets.patch deleted file mode 100644 index c21fd60504..0000000000 --- a/srcpkgs/dhcpcd/patches/fix-truncated-packets.patch +++ /dev/null @@ -1,77 +0,0 @@ -Index: dhcp.c -================================================================== ---- dhcp.c -+++ dhcp.c -@@ -1082,13 +1082,16 @@ - } - - *p++ = DHO_END; - len = (size_t)(p - (uint8_t *)bootp); - -- /* Pad out to the BOOTP minimum message length. -- * Some DHCP servers incorrectly require this. */ -- while (len < BOOTP_MESSAGE_LENTH_MIN) { -+ /* Pad out to the BOOTP message length. -+ * Even if we send a DHCP packet with a variable length vendor area, -+ * some servers / relay agents don't like packets smaller than -+ * a BOOTP message which is fine because that's stipulated -+ * in RFC1542 section 2.1. */ -+ while (len < sizeof(*bootp)) { - *p++ = DHO_PAD; - len++; - } - - if (ifo->auth.options & DHCPCD_AUTH_SEND && auth_len != 0) -@@ -3134,18 +3137,30 @@ - { - logger(ifp->ctx, LOG_WARNING, - "%s: server %s is not destination", - ifp->name, inet_ntoa(from)); - } -- -+ /* -+ * DHCP has a variable option area rather than a fixed -+ * vendor area. -+ * Because DHCP uses the BOOTP protocol it should -+ * still send BOOTP sized packets to be RFC compliant. -+ * However some servers send a truncated vendor area. -+ * dhcpcd can work fine without the vendor area being sent. -+ */ - bytes = get_udp_data(&bootp, buf); -- if (bytes < sizeof(struct bootp)) { -+ if (bytes < offsetof(struct bootp, vend)) { - logger(ifp->ctx, LOG_ERR, - "%s: truncated packet (%zu) from %s", - ifp->name, bytes, inet_ntoa(from)); - continue; - } -+ /* But to make our IS_DHCP macro easy, ensure the vendor -+ * area has at least 4 octets. */ -+ while (bytes < offsetof(struct bootp, vend) + 4) -+ bootp[bytes++] = '\0'; -+ - dhcp_handledhcp(ifp, (struct bootp *)bootp, bytes, &from); - if (state->raw_fd == -1) - break; - } - } - -Index: dhcp.h -================================================================== ---- dhcp.h -+++ dhcp.h -@@ -129,13 +129,10 @@ - FQDN_NONE = 0x18, - FQDN_PTR = 0x20, - FQDN_BOTH = 0x31 - }; - --/* Some crappy DHCP servers require the BOOTP minimum length */ --#define BOOTP_MESSAGE_LENTH_MIN 300 -- - /* Don't import common.h as that defines __unused which causes problems - * on some Linux systems which define it as part of a structure */ - #if __GNUC__ > 2 || defined(__INTEL_COMPILER) - # ifndef __packed - # define __packed __attribute__((__packed__)) - diff --git a/srcpkgs/dhcpcd/template b/srcpkgs/dhcpcd/template index 04d8ae92b3..5ed1e4dfc8 100644 --- a/srcpkgs/dhcpcd/template +++ b/srcpkgs/dhcpcd/template @@ -1,7 +1,7 @@ # Template file for 'dhcpcd' pkgname=dhcpcd -version=6.11.0 -revision=2 +version=6.11.1 +revision=1 lib32disabled=yes build_style=configure configure_args="--prefix=/usr --sbindir=/usr/bin --sysconfdir=/etc --rundir=/run" @@ -13,7 +13,7 @@ maintainer="Juan RP " license="2-clause-BSD" homepage="http://roy.marples.name/projects/dhcpcd" distfiles="http://roy.marples.name/downloads/dhcpcd/dhcpcd-${version}.tar.xz" -checksum=31c2cd327657f11c427fe5044f74c5b942e70450fa43ceabf4b25f3fd4999959 +checksum=5c823d607ed1d7513d16ec51c54e21657f1324899e0ba333a497682d88a8c6ee pre_install() { # make wpa_supplicant log to syslog rather than stdout