Index: isc-dhcp30-server/files/patch-client::dhclient.c =================================================================== RCS file: /ncvs/ports/net/isc-dhcp30-server/files/patch-client::dhclient.c,v retrieving revision 1.6 diff -u -r1.6 patch-client::dhclient.c --- isc-dhcp30-server/files/patch-client::dhclient.c 13 Oct 2008 11:10:11 -0000 1.6 +++ isc-dhcp30-server/files/patch-client::dhclient.c 15 Jul 2009 19:09:32 -0000 @@ -1,5 +1,5 @@ ---- client/dhclient.c.orig 2008-01-22 17:28:23.000000000 +0000 -+++ client/dhclient.c 2008-05-26 08:17:53.000000000 +0000 +--- client/dhclient.c.orig 2008-01-22 12:28:23.000000000 -0500 ++++ client/dhclient.c 2009-07-15 15:02:28.000000000 -0400 @@ -38,6 +38,13 @@ #include "dhcpd.h" #include "version.h" @@ -242,7 +242,19 @@ add_timeout (cur_time + client -> interval, send_request, client, 0, 0); } -@@ -2624,6 +2734,13 @@ +@@ -2509,8 +2619,9 @@ + (struct option_state *)0, + lease -> options, + &global_scope, oc, MDL)) { +- if (data.len > 3) { +- struct iaddr netmask, subnet, broadcast; ++ struct iaddr netmask; ++ if (data.len > 3 && data.len <= sizeof(netmask.iabuf)) { ++ struct iaddr subnet, broadcast; + + memcpy (netmask.iabuf, data.data, data.len); + netmask.len = data.len; +@@ -2624,6 +2735,13 @@ */ if (leaseFile != NULL) fclose(leaseFile); @@ -256,7 +268,7 @@ execve (scriptName, argv, envp); log_error ("execve (%s, ...): %m", scriptName); exit (0); -@@ -2810,8 +2927,10 @@ +@@ -2810,8 +2928,10 @@ case S_STOPPED: break; } @@ -267,7 +279,7 @@ } } } -@@ -3039,7 +3158,9 @@ +@@ -3039,7 +3159,9 @@ break; case server_awaken: @@ -277,7 +289,7 @@ break; } } -@@ -3177,3 +3298,265 @@ +@@ -3177,3 +3299,265 @@ data_string_forget (&ddns_dhcid, MDL); return rcode; } Index: isc-dhcp31-server/files/patch-client::dhclient.c =================================================================== RCS file: /ncvs/ports/net/isc-dhcp31-server/files/patch-client::dhclient.c,v retrieving revision 1.6 diff -u -r1.6 patch-client::dhclient.c --- isc-dhcp31-server/files/patch-client::dhclient.c 13 Oct 2008 12:03:15 -0000 1.6 +++ isc-dhcp31-server/files/patch-client::dhclient.c 15 Jul 2009 19:09:32 -0000 @@ -1,5 +1,5 @@ ---- client/dhclient.c.orig 2008-01-23 06:02:50.000000000 +1100 -+++ client/dhclient.c 2008-10-13 22:47:51.000000000 +1100 +--- client/dhclient.c.orig 2008-01-22 14:02:50.000000000 -0500 ++++ client/dhclient.c 2009-07-15 14:57:13.000000000 -0400 @@ -38,6 +38,13 @@ #include "dhcpd.h" #include "version.h" @@ -242,7 +242,19 @@ add_timeout (cur_time + client -> interval, send_request, client, 0, 0); } -@@ -2654,6 +2765,13 @@ +@@ -2544,8 +2655,9 @@ + (struct option_state *)0, + lease -> options, + &global_scope, oc, MDL)) { +- if (data.len > 3) { +- struct iaddr netmask, subnet, broadcast; ++ struct iaddr netmask; ++ if (data.len > 3 && data.len <= sizeof(netmask.iabuf)) { ++ struct iaddr subnet, broadcast; + + memcpy (netmask.iabuf, data.data, data.len); + netmask.len = data.len; +@@ -2654,6 +2766,13 @@ wstatus = 0; } } else { @@ -256,7 +268,7 @@ /* We don't want to pass an open file descriptor for * dhclient.leases when executing dhclient-script. */ -@@ -2840,8 +2958,10 @@ +@@ -2840,8 +2959,10 @@ case S_STOPPED: break; } @@ -267,7 +279,7 @@ } } } -@@ -3069,7 +3189,9 @@ +@@ -3069,7 +3190,9 @@ break; case server_awaken: @@ -277,7 +289,7 @@ break; } } -@@ -3207,3 +3329,265 @@ +@@ -3207,3 +3330,265 @@ data_string_forget (&ddns_dhcid, MDL); return rcode; }