diff --git a/pkgs/tools/networking/dhcpcd/check-interface.patch b/pkgs/tools/networking/dhcpcd/check-interface.patch deleted file mode 100644 index 11685c0d45e4..000000000000 --- a/pkgs/tools/networking/dhcpcd/check-interface.patch +++ /dev/null @@ -1,44 +0,0 @@ -Fix a segfault in handle_interface: if we're adding an interface that -we already knew about (in particular due to a udev event), then -calling init_state/start_interface on ifp is bad because we later free -ifp. This leads to messages like: - - dhcpcd[1342]: eth0: IAID conflicts with one assigned to eth0 - -and then a crash: - - Invalid read of size 8 - at 0x41CD07: dhcp_handlepacket (dhcp.c:2555) - by 0x408A74: eloop_start (eloop.c:399) - by 0x4073B6: main (dhcpcd.c:1537) - - Address 0x54573d8 is 200 bytes inside a block of size 232 free'd - at 0x4C27507: free (in /nix/store/jafbjc2y6izmh3sk78fl65n55jll4mj8-valgrind-3.9.0/lib/valgrind/vgpreload_memcheck-amd64-linux.so) - by 0x40F0A8: free_interface (net.c:153) - by 0x405443: handle_interface (dhcpcd.c:764) by 0x57E0F06: ??? (udev.c:97) - by 0x42EB62: dev_handle_data (dev.c:153) - by 0x408A74: eloop_start (eloop.c:399) - by 0x4073B6: main (dhcpcd.c:1537) - -So ignore interfaces that we already know about. - -diff -ru -x '*~' dhcpcd-6.4.0-orig/dhcpcd.c dhcpcd-6.4.0/dhcpcd.c ---- dhcpcd-6.4.0-orig/dhcpcd.c 2014-06-14 22:13:12.000000000 +0200 -+++ dhcpcd-6.4.0/dhcpcd.c 2014-07-03 11:13:39.133186533 +0200 -@@ -774,11 +774,11 @@ - } else { - TAILQ_REMOVE(ifs, ifp, next); - TAILQ_INSERT_TAIL(ctx->ifaces, ifp, next); -- } -- if (action > 0) { -- init_state(ifp, ctx->argc, ctx->argv); -- run_preinit(ifp); -- dhcpcd_startinterface(ifp); -+ if (action > 0) { -+ init_state(ifp, ctx->argc, ctx->argv); -+ run_preinit(ifp); -+ dhcpcd_startinterface(ifp); -+ } - } - } - diff --git a/pkgs/tools/networking/dhcpcd/default.nix b/pkgs/tools/networking/dhcpcd/default.nix index c3eeb20a2dea..8e93c424cb1e 100644 --- a/pkgs/tools/networking/dhcpcd/default.nix +++ b/pkgs/tools/networking/dhcpcd/default.nix @@ -1,14 +1,14 @@ { stdenv, fetchurl, pkgconfig, udev }: stdenv.mkDerivation rec { - name = "dhcpcd-6.4.0"; + name = "dhcpcd-6.4.2"; src = fetchurl { url = "http://roy.marples.name/downloads/dhcpcd/${name}.tar.bz2"; - sha256 = "04whlqg1lik1c690kpgmw5hh6qzim64bw0l4fpr4vb8cj74aj4q4"; + sha256 = "1dr08aqvazg4ncq5p93v6givwh7naj75dn2npgplf3dl2fg9zfzf"; }; - patches = [ /* ./lxc_ro_promote_secondaries.patch */ ./reload.patch ./check-interface.patch ]; + patches = [ /* ./lxc_ro_promote_secondaries.patch */ ]; buildInputs = [ pkgconfig udev ]; diff --git a/pkgs/tools/networking/dhcpcd/reload.patch b/pkgs/tools/networking/dhcpcd/reload.patch deleted file mode 100644 index 126ad105cbbf..000000000000 --- a/pkgs/tools/networking/dhcpcd/reload.patch +++ /dev/null @@ -1,26 +0,0 @@ -Fix segfault when reloading the configuration: free_globals() left the -ifac/ifdc variables at -1 instead of 0, causing a crash later in -splitv(). - ---- a/dhcpcd.c -+++ b/dhcpcd.c -@@ -143,16 +143,18 @@ - if (ctx->ifac) { - for (ctx->ifac--; ctx->ifac >= 0; ctx->ifac--) - free(ctx->ifav[ctx->ifac]); - free(ctx->ifav); - ctx->ifav = NULL; -+ ctx->ifac = 0; - } - if (ctx->ifdc) { - for (ctx->ifdc--; ctx->ifdc >= 0; ctx->ifdc--) - free(ctx->ifdv[ctx->ifdc]); - free(ctx->ifdv); - ctx->ifdv = NULL; -+ ctx->ifdc = 0; - } - - #ifdef INET - if (ctx->dhcp_opts) { - for (opt = ctx->dhcp_opts; -