aboutsummaryrefslogtreecommitdiff
path: root/net/isc-dhcp30-server
diff options
context:
space:
mode:
authorSergey Matveychuk <sem@FreeBSD.org>2006-05-24 06:33:55 +0000
committerSergey Matveychuk <sem@FreeBSD.org>2006-05-24 06:33:55 +0000
commited14f324dd9a0028088482d5843b74f651125e9e (patch)
tree31805fe391e9855e0a0dbda6497b7fab4b924252 /net/isc-dhcp30-server
parent366cd5d141c8eae62423b6b62fa03ffa6ebc0ca6 (diff)
downloadports-ed14f324dd9a0028088482d5843b74f651125e9e.tar.gz
ports-ed14f324dd9a0028088482d5843b74f651125e9e.zip
- Fix the time_t problem on *64 ARCHS without introducing a possible
security risk by writing 8 bytes to a 4 byte declared variable. The first fix introduced a potential security problem. PR: ports/97681 Submitted by: maintainer, Dan Lukes <dan_at_obluda.cz> (an initial patch)
Notes
Notes: svn path=/head/; revision=163229
Diffstat (limited to 'net/isc-dhcp30-server')
-rw-r--r--net/isc-dhcp30-server/Makefile6
-rw-r--r--net/isc-dhcp30-server/files/patch-includes::cf::freebsd.h9
-rw-r--r--net/isc-dhcp30-server/files/patch-server::dhcp.c53
3 files changed, 54 insertions, 14 deletions
diff --git a/net/isc-dhcp30-server/Makefile b/net/isc-dhcp30-server/Makefile
index 604b00ace9d2..9bdf77dd2fbd 100644
--- a/net/isc-dhcp30-server/Makefile
+++ b/net/isc-dhcp30-server/Makefile
@@ -8,7 +8,7 @@
PORTNAME= dhcp
PORTVERSION= 3.0.4
-PORTREVISION= 1
+PORTREVISION= 2
CATEGORIES= net
MASTER_SITES= ${MASTER_SITE_ISC}
MASTER_SITE_SUBDIR= dhcp dhcp/dhcp-3.0-history
@@ -40,10 +40,6 @@ OPTIONS= DHCP_PARANOIA "add -user, -group and -chroot options" on \
.include <bsd.port.pre.mk>
-.if ${ARCH} == "amd64" || ${ARCH} == "ia64" || ${ARCH} == "sparc64"
-FORBIDDEN= the last fix for 64-bit platforms may cause security problems
-.endif
-
.if ${SUBSYS} == server && defined(WITH_DHCP_LDAP)
# Based on patch from Brian Masney :
PATCH_SITES= http://www.newwave.net/~masneyb/:ldap \
diff --git a/net/isc-dhcp30-server/files/patch-includes::cf::freebsd.h b/net/isc-dhcp30-server/files/patch-includes::cf::freebsd.h
index 26d1d992bb46..071ac6ca5a29 100644
--- a/net/isc-dhcp30-server/files/patch-includes::cf::freebsd.h
+++ b/net/isc-dhcp30-server/files/patch-includes::cf::freebsd.h
@@ -9,15 +9,6 @@
#include <string.h>
#include <paths.h>
#include <errno.h>
-@@ -82,7 +82,7 @@
-
- /* Time stuff... */
- #include <sys/time.h>
--#define TIME time_t
-+#define TIME u_int32_t
- #define GET_TIME(x) time ((x))
-
- #define HAVE_SA_LEN
@@ -97,6 +97,10 @@
#define SOCKLEN_T int
#endif
diff --git a/net/isc-dhcp30-server/files/patch-server::dhcp.c b/net/isc-dhcp30-server/files/patch-server::dhcp.c
new file mode 100644
index 000000000000..94981458272e
--- /dev/null
+++ b/net/isc-dhcp30-server/files/patch-server::dhcp.c
@@ -0,0 +1,53 @@
+--- server/dhcp.c.orig Wed Feb 22 23:43:27 2006
++++ server/dhcp.c Mon May 22 01:39:59 2006
+@@ -2442,6 +2442,7 @@
+ offered_lease_time =
+ state -> offered_expiry - cur_time;
+
++ state -> expiry = 0;
+ putULong ((unsigned char *)&state -> expiry,
+ (unsigned long)offered_lease_time);
+ i = DHO_DHCP_LEASE_TIME;
+@@ -2452,7 +2453,7 @@
+ if (option_cache_allocate (&oc, MDL)) {
+ if (make_const_data (&oc -> expression,
+ (unsigned char *)&state -> expiry,
+- sizeof state -> expiry,
++ 4,
+ 0, 0, MDL)) {
+ oc -> option = dhcp_universe.options [i];
+ save_option (&dhcp_universe,
+@@ -2463,6 +2464,7 @@
+
+ /* Renewal time is lease time * 0.5. */
+ offered_lease_time /= 2;
++ state -> renewal = 0;
+ putULong ((unsigned char *)&state -> renewal,
+ (unsigned long)offered_lease_time);
+ i = DHO_DHCP_RENEWAL_TIME;
+@@ -2474,7 +2476,7 @@
+ if (make_const_data (&oc -> expression,
+ (unsigned char *)
+ &state -> renewal,
+- sizeof state -> renewal,
++ 4,
+ 0, 0, MDL)) {
+ oc -> option = dhcp_universe.options [i];
+ save_option (&dhcp_universe,
+@@ -2486,6 +2488,7 @@
+ /* Rebinding time is lease time * 0.875. */
+ offered_lease_time += (offered_lease_time / 2
+ + offered_lease_time / 4);
++ state -> rebind = 0;
+ putULong ((unsigned char *)&state -> rebind,
+ (unsigned)offered_lease_time);
+ i = DHO_DHCP_REBINDING_TIME;
+@@ -2496,7 +2499,7 @@
+ if (option_cache_allocate (&oc, MDL)) {
+ if (make_const_data (&oc -> expression,
+ (unsigned char *)&state -> rebind,
+- sizeof state -> rebind,
++ 4,
+ 0, 0, MDL)) {
+ oc -> option = dhcp_universe.options [i];
+ save_option (&dhcp_universe,