summaryrefslogtreecommitdiff
path: root/net-misc/dhcpcd
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/dhcpcd')
-rw-r--r--net-misc/dhcpcd/Manifest3
-rw-r--r--net-misc/dhcpcd/dhcpcd-8.0.2-r1.ebuild (renamed from net-misc/dhcpcd/dhcpcd-8.0.2.ebuild)4
-rw-r--r--net-misc/dhcpcd/files/dhcpcd-8.0.2-string_termination.patch80
3 files changed, 86 insertions, 1 deletions
diff --git a/net-misc/dhcpcd/Manifest b/net-misc/dhcpcd/Manifest
index a3708d2efc93..aa83e8587874 100644
--- a/net-misc/dhcpcd/Manifest
+++ b/net-misc/dhcpcd/Manifest
@@ -1,8 +1,9 @@
+AUX dhcpcd-8.0.2-string_termination.patch 1827 BLAKE2B d90f757e740cf73adc76d82705f669bd0d43415f523ff01d11c0afe911ab744cf5d36b32906209abc110eff2355f1687b2055cfac4a22085ba4aee65c74e5e27 SHA512 1d232efc8c822534dd55a5e5998392e4ded7b9051b69413a7ef44b450a1e050c651467148d560008fd537a5388873ba0d2efe9f4f6e4b7829f3f6ae87d82971e
AUX dhcpcd.initd 328 BLAKE2B 72ef6bb16e4f80b440890112cd399eca1057ae42ddc96ee1a29482a048682dd34e065bb68876329ecfe2f1db4c084e320f4185b3029b89c2328d6ab27a1a7e80 SHA512 6d3220155f2d9ed3e3a00afd378eeb70d435e19804201f8bb35498f1f7f3dfdaeaa2f4a01a18f5e96b457d9c173bc6a206b3e67ebf6d95da7e7b350dcd153fde
AUX dhcpcd.service 227 BLAKE2B e24aa85c15d0211856b02508b681f7e3c1f8b8b1743f31ced9600c2c33da04b61f2166cad7696776ae81ce1be5701cae2691f6dfd86aaf8679f20e459e87c7e5 SHA512 4a030dc291fa7deba9c1f33d61dafdda710247ef7f3743c28e46b767a190e359e468433147bda23c82fae9c93ec31cd68905bfdb51cb8c2d9176ea789b31b14e
DIST dhcpcd-7.2.3.tar.xz 213552 BLAKE2B 5f89e11424b85702b05da6207ec346480c029de1416cc8892471de428ca0a4395a8915700e2237bfa2b133648973bc2a7c7d15aa2d0ba492f96fbf3908d7f613 SHA512 271cca422fad10eaf842acfd5b590c0ad537f5f23ee919a3928d8ad98463ab03bde21c0bc08741ea9618ee31095160a7c00066155eae2c74b17c49af65ba566f
DIST dhcpcd-8.0.2.tar.xz 222408 BLAKE2B fb27a33cd64c7aeedb28e05c885c860618d923ac857895b9fdc7daa608f433587bea1e6630fd9897426b371a45b8a336e1edaa804d76eda6e9fc2adc1411aed2 SHA512 a6e3aa66800adc8b209324bae02a6e373e2623735bf0695ffec4a7c972d65c3498f55e4da62f93df0bc6cddb4bee8ab667b3743b5b25cd5f4cc9da4d1f8e15c4
EBUILD dhcpcd-7.2.3.ebuild 4407 BLAKE2B 6f5df954ec0be66be6a4f4c1b63a1dee87e78d5cab8de8cbe935bd0d2a82caf70c5dc8d513ddc69b6e317a3d44c2a527529420da71ecf1489a71cdc2f4384eb5 SHA512 aa591926ec797c71c9d28d91a64257eaee76e2fae6853925e0b0fdf9001fd6279bdae68bdd2727f500661b8142c96b3c66ab28b055fb8887c4b7d96162d42843
-EBUILD dhcpcd-8.0.2.ebuild 4420 BLAKE2B d1788540e773dc7708565dd2343989522004ad307e0ae24fad827f9ecc8ebf181d47bc34e16179f50a16ece7105761f9177cb4e310a586b0ed11a5343dc97b03 SHA512 207fb14d4e3c6089d1f4ac5816fd3635c2e38d74e0f1dd19d41aa482d5b399f90a8b352e77eec7153019168746d7f1c63499a741430a8df95f3734bf7cfd878b
+EBUILD dhcpcd-8.0.2-r1.ebuild 4486 BLAKE2B 4fa85a2475043c6a24402a596a38f1ff01aa9d8df9ce03270b411060383d4382e21958b7eb69c7e1963f3b9f5a9296bdbd4cc814c7e344a759fbd0e5500d1f3b SHA512 ba68295d42423c80ab51c332b642837e19bad3126584d9f0cb210fccf9ce4d51d197e159f79b7edfefc80996bc96d98a1dba7e0dc51d213bea54ebd596960982
EBUILD dhcpcd-9999.ebuild 4420 BLAKE2B d1788540e773dc7708565dd2343989522004ad307e0ae24fad827f9ecc8ebf181d47bc34e16179f50a16ece7105761f9177cb4e310a586b0ed11a5343dc97b03 SHA512 207fb14d4e3c6089d1f4ac5816fd3635c2e38d74e0f1dd19d41aa482d5b399f90a8b352e77eec7153019168746d7f1c63499a741430a8df95f3734bf7cfd878b
MISC metadata.xml 569 BLAKE2B 0507986b52ed21277e159089c7f4736602917c44f0577d62e7501d728c348b49ecf3a2c92842c8e32a59402ad2c2e4e5c3fba510e227aca738a3d763b62689fe SHA512 9083c03d22c5753f54d9525ac954df8df0cceaed07c05c14367ea2b8598e7d7ab64711c810dc89a46be8d76cba6b9aa14fa389f0d686ed12792c0bfcbabc266a
diff --git a/net-misc/dhcpcd/dhcpcd-8.0.2.ebuild b/net-misc/dhcpcd/dhcpcd-8.0.2-r1.ebuild
index d8940210a7b5..1696c38dcf71 100644
--- a/net-misc/dhcpcd/dhcpcd-8.0.2.ebuild
+++ b/net-misc/dhcpcd/dhcpcd-8.0.2-r1.ebuild
@@ -27,6 +27,10 @@ COMMON_DEPEND="udev? ( virtual/udev )"
DEPEND="${COMMON_DEPEND}"
RDEPEND="${COMMON_DEPEND}"
+PATCHES=(
+ "${FILESDIR}"/${P}-string_termination.patch #691426
+)
+
src_configure() {
local myeconfargs=(
--dbdir="${EPREFIX}/var/lib/dhcpcd"
diff --git a/net-misc/dhcpcd/files/dhcpcd-8.0.2-string_termination.patch b/net-misc/dhcpcd/files/dhcpcd-8.0.2-string_termination.patch
new file mode 100644
index 000000000000..a1bc19ec974d
--- /dev/null
+++ b/net-misc/dhcpcd/files/dhcpcd-8.0.2-string_termination.patch
@@ -0,0 +1,80 @@
+https://bugs.gentoo.org/691426
+
+diff --git a/src/dhcp-common.c b/src/dhcp-common.c
+index 08ab9493..9f556557 100644
+--- a/src/dhcp-common.c
++++ b/src/dhcp-common.c
+@@ -645,14 +645,16 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt,
+ if (fputc('=', fp) == EOF)
+ return -1;
+ if (dl == 0)
+- return 1;
++ goto out;
+
+ if (opt->type & OT_RFC1035) {
+ char domain[NS_MAXDNAME];
+
+ sl = decode_rfc1035(domain, sizeof(domain), data, dl);
+- if (sl == 0 || sl == -1)
+- return sl;
++ if (sl == -1)
++ return -1;
++ if (sl == 0)
++ goto out;
+ if (valid_domainname(domain, opt->type) == -1)
+ return -1;
+ return efprintf(fp, "%s", domain);
+@@ -693,9 +695,7 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt,
+ return -1;
+ }
+ }
+- if (fputc('\0', fp) == EOF)
+- return -1;
+- return 1;
++ goto out;
+ }
+
+ t = data;
+@@ -760,6 +760,7 @@ print_option(FILE *fp, const char *prefix, const struct dhcp_opt *opt,
+ }
+ }
+
++out:
+ if (fputc('\0', fp) == EOF)
+ return -1;
+ return 1;
+diff --git a/src/script.c b/src/script.c
+index 74aef1b1..3dee7b08 100644
+--- a/src/script.c
++++ b/src/script.c
+@@ -33,6 +33,7 @@
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+
++#include <assert.h>
+ #include <ctype.h>
+ #include <errno.h>
+ #include <signal.h>
+@@ -477,12 +478,21 @@ dumplease:
+ fp = NULL;
+ #endif
+
++ /* Count the terminated env strings.
++ * assert that the terminations are correct. */
+ nenv = 0;
+ endp = buf + buf_pos;
+ for (bufp = buf; bufp < endp; bufp++) {
+- if (*bufp == '\0')
++ if (*bufp == '\0') {
++#ifndef NDEBUG
++ if (bufp + 1 < endp)
++ assert(*(bufp + 1) != '\0');
++#endif
+ nenv++;
++ }
+ }
++ assert(*--bufp == '\0');
++
+ if (ctx->script_envlen < nenv) {
+ env = reallocarray(ctx->script_env, nenv + 1, sizeof(*env));
+ if (env == NULL)