--- freeradius-2.0.4+dfsg.orig/dialup_admin/bin/backup_radacct
+++ freeradius-2.0.4+dfsg/dialup_admin/bin/backup_radacct
@@ -1,5 +1,6 @@
 #!/usr/bin/perl
 use POSIX;
+use File::Temp;
 
 $conf=shift||'/data/local/dialupadmin/conf/admin.conf';
 $back_days = 80;
@@ -38,14 +39,13 @@
 
 $query = "SELECT * FROM $sql_accounting_table WHERE AcctStopTime < '$date' AND AcctStopTime > '$date2';";
 print "$query\n";
-open TMP, ">/tmp/backup_radacct.query"
-	or die "Could not open tmp file\n";
-print TMP "ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZH:TZM';\n" if ($sql_type eq 'oracle');
-print TMP $query;
-close TMP;
-$comm = "$sqlcmd -B -h $sql_server -u $sql_username $sql_password $sql_database </tmp/backup_radacct.query >$backup_directory/$date3" if ($sql_type eq 'mysql');
-$comm = "$sqlcmd  -U $sql_username -f /tmp/backup_radacct.query $sql_database >$backup_directory/$date3" if ($sql_type eq 'pg');
+my ($fh, $tmp_filename) = tempfile() or die "Could not open tmp file\n";
+print $fh "ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT='YYYY-MM-DD HH24:MI:SS.FF TZH:TZM';\n" if ($sql_type eq 'oracle');
+print $fh $query;
+close $fh;
+$comm = "$sqlcmd -B -h $sql_server -u $sql_username $sql_password $sql_database < $tmp_filename >$backup_directory/$date3" if ($sql_type eq 'mysql');
+$comm = "$sqlcmd  -U $sql_username -f $tmp_filename $sql_database >$backup_directory/$date3" if ($sql_type eq 'pg');
 $command = "$sqlcmd  $sql_username/$pass" . "@" . "$sql_database <$tmpfile.$server" if ($sql_type eq 'oracle');
-$command = "$sqlcmd '$sql_server' '$sql_port' '' '$sql_username' '$sql_password' </tmp/backup_radacct.query >$backup_directory/$date3" if ($sql_type eq 'sqlrelay');
+$command = "$sqlcmd '$sql_server' '$sql_port' '' '$sql_username' '$sql_password' < $tmp_filename >$backup_directory/$date3" if ($sql_type eq 'sqlrelay');
 `$comm`;
 `/usr/local/bin/gzip -9 $backup_directory/$date3`;
--- freeradius-2.0.4+dfsg.orig/src/lib/packet.c
+++ freeradius-2.0.4+dfsg/src/lib/packet.c
@@ -1,7 +1,7 @@
 /*
  * packet.c	Generic packet manipulation functions.
  *
- * Version:	$Id: packet.c,v 1.20 2008/01/01 17:29:12 aland Exp $
+ * Version:	$Id: packet.c,v 1.21 2008/05/29 15:00:54 aland Exp $
  *
  *   This library is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@
  */
 
 #include	<freeradius-devel/ident.h>
-RCSID("$Id: packet.c,v 1.20 2008/01/01 17:29:12 aland Exp $")
+RCSID("$Id: packet.c,v 1.21 2008/05/29 15:00:54 aland Exp $")
 
 #include	<freeradius-devel/libradius.h>
 
@@ -175,6 +175,7 @@
 int fr_socket(fr_ipaddr_t *ipaddr, int port)
 {
 	int sockfd;
+	uint16_t sport;
 	struct sockaddr_storage salocal;
 	socklen_t	salen;
 
@@ -185,6 +186,7 @@
 
 	sockfd = socket(ipaddr->af, SOCK_DGRAM, 0);
 	if (sockfd < 0) {
+		librad_log("cannot open socket: %s", strerror(errno));
 		return sockfd;
 	}
 
@@ -194,29 +196,34 @@
 	 */
 	if (udpfromto_init(sockfd) != 0) {
 		close(sockfd);
+		librad_log("cannot initialize udpfromto: %s", strerror(errno));
 		return -1;
 	}
 #endif
 
+	sport = port;
+	sport = htons(sport);
 	memset(&salocal, 0, sizeof(salocal));
 	if (ipaddr->af == AF_INET) {
-		struct sockaddr_in *sa;
+		struct sockaddr_in s4;
 
-		sa = (struct sockaddr_in *) &salocal;
-		sa->sin_family = AF_INET;
-		sa->sin_addr = ipaddr->ipaddr.ip4addr;
-		sa->sin_port = htons((uint16_t) port);
-		salen = sizeof(*sa);
+		s4.sin_family = AF_INET;
+		s4.sin_addr = ipaddr->ipaddr.ip4addr;
+		s4.sin_port = sport;
+		salen = sizeof(s4);
+		memset(&salocal, 0, sizeof(salocal));
+		memcpy(&salocal, &s4, salen);
 
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 	} else if (ipaddr->af == AF_INET6) {
-		struct sockaddr_in6 *sa;
+		struct sockaddr_in6 s6;
 
-		sa = (struct sockaddr_in6 *) &salocal;
-		sa->sin6_family = AF_INET6;
-		sa->sin6_addr = ipaddr->ipaddr.ip6addr;
-		sa->sin6_port = htons((uint16_t) port);
-		salen = sizeof(*sa);
+		s6.sin6_family = AF_INET6;
+		s6.sin6_addr = ipaddr->ipaddr.ip6addr;
+		s6.sin6_port = sport;
+		salen = sizeof(s6);
+		memset(&salocal, 0, sizeof(salocal));
+		memcpy(&salocal, &s6, salen);
 
 #if 1
 		/*
@@ -242,6 +249,7 @@
 
 	if (bind(sockfd, (struct sockaddr *) &salocal, salen) < 0) {
 		close(sockfd);
+		librad_log("cannot bind socket: %s", strerror(errno));
 		return -1;
 	}
 
@@ -377,11 +385,11 @@
 	 */
 	ps->ipaddr.af = src.ss_family;
 	if (src.ss_family == AF_INET) {
-		struct sockaddr_in	*s4;
+		struct sockaddr_in	s4;
 
-		s4 = (struct sockaddr_in *)&src;
-		ps->ipaddr.ipaddr.ip4addr = s4->sin_addr;
-		ps->port = ntohs(s4->sin_port);
+		memcpy(&s4, &src, sizeof(s4));
+		ps->ipaddr.ipaddr.ip4addr = s4.sin_addr;
+		ps->port = ntohs(s4.sin_port);
 
 		if (ps->ipaddr.ipaddr.ip4addr.s_addr == INADDR_ANY) {
 			ps->inaddr_any = 1;
@@ -389,11 +397,11 @@
 
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 	} else if (src.ss_family == AF_INET6) {
-		struct sockaddr_in6	*s6;
+		struct sockaddr_in6	s6;
 
-		s6 = (struct sockaddr_in6 *)&src;
-		ps->ipaddr.ipaddr.ip6addr = s6->sin6_addr;
-		ps->port = ntohs(s6->sin6_port);
+		memcpy(&s6, &src, sizeof(s6));
+		ps->ipaddr.ipaddr.ip6addr = s6.sin6_addr;
+		ps->port = ntohs(s6.sin6_port);
 
 		if (IN6_IS_ADDR_UNSPECIFIED(&ps->ipaddr.ipaddr.ip6addr)) {
 			ps->inaddr_any = 1;
--- freeradius-2.0.4+dfsg.orig/src/lib/radius.c
+++ freeradius-2.0.4+dfsg/src/lib/radius.c
@@ -1,7 +1,7 @@
 /*
  * radius.c	Functions to send/receive radius packets.
  *
- * Version:	$Id: radius.c,v 1.219 2008/04/11 09:55:02 aland Exp $
+ * Version:	$Id: radius.c,v 1.220 2008/05/29 15:00:54 aland Exp $
  *
  *   This library is free software; you can redistribute it and/or
  *   modify it under the terms of the GNU Lesser General Public
@@ -21,7 +21,7 @@
  */
 
 #include	<freeradius-devel/ident.h>
-RCSID("$Id: radius.c,v 1.219 2008/04/11 09:55:02 aland Exp $")
+RCSID("$Id: radius.c,v 1.220 2008/05/29 15:00:54 aland Exp $")
 
 #include	<freeradius-devel/libradius.h>
 #include	<freeradius-devel/md5.h>
@@ -165,22 +165,24 @@
 	 *	IPv4 is supported.
 	 */
 	if (dst_ipaddr->af == AF_INET) {
-		struct sockaddr_in	*s4;
+		struct sockaddr_in	s4;
 
-		s4 = (struct sockaddr_in *)&dst;
-		sizeof_dst = sizeof(struct sockaddr_in);
+		sizeof_dst = sizeof(s4);
 
-		s4->sin_family = AF_INET;
-		s4->sin_addr = dst_ipaddr->ipaddr.ip4addr;
-		s4->sin_port = htons(dst_port);
+		s4.sin_family = AF_INET;
+		s4.sin_addr = dst_ipaddr->ipaddr.ip4addr;
+		s4.sin_port = htons(dst_port);
+		memset(&dst, 0, sizeof(dst));
+		memcpy(&dst, &s4, sizeof_dst);
 
 #ifdef WITH_UDPFROMTO
-		s4 = (struct sockaddr_in *)&src;
-		sizeof_src = sizeof(struct sockaddr_in);
+		sizeof_src = sizeof(s4);
 
-		s4->sin_family = AF_INET;
-		s4->sin_addr = src_ipaddr->ipaddr.ip4addr;
-		s4->sin_port = htons(src_port);
+		s4.sin_family = AF_INET;
+		s4.sin_addr = src_ipaddr->ipaddr.ip4addr;
+		s4.sin_port = htons(src_port);
+		memset(&src, 0, sizeof(src));
+		memcpy(&src, &s4, sizeof_src);
 #else
 		src_port = src_port; /* -Wunused */
 #endif
@@ -190,23 +192,25 @@
 	 */
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 	} else if (dst_ipaddr->af == AF_INET6) {
-		struct sockaddr_in6	*s6;
+		struct sockaddr_in6	s6;
 
-		s6 = (struct sockaddr_in6 *)&dst;
-		sizeof_dst = sizeof(struct sockaddr_in6);
+		sizeof_dst = sizeof(s6);
 
-		s6->sin6_family = AF_INET6;
-		s6->sin6_addr = dst_ipaddr->ipaddr.ip6addr;
-		s6->sin6_port = htons(dst_port);
+		s6.sin6_family = AF_INET6;
+		s6.sin6_addr = dst_ipaddr->ipaddr.ip6addr;
+		s6.sin6_port = htons(dst_port);
+		memset(&dst, 0, sizeof(dst));
+		memcpy(&dst, &s6, sizeof_dst);
 
 #ifdef WITH_UDPFROMTO
 		return -1;	/* UDPFROMTO && IPv6 are not supported */
 #if 0
-		s6 = (struct sockaddr_in6 *)&src;
-		sizeof_src = sizeof(struct sockaddr_in6);
+		sizeof_src = sizeof(s6);
 
-		s6->sin6_family = AF_INET6;
-		s6->sin6_addr = src_ipaddr->ipaddr.ip6addr;
+		s6.sin6_family = AF_INET6;
+		s6.sin6_addr = src_ipaddr->ipaddr.ip6addr;
+		memset(&src, 0, sizeof(src));
+		memcpy(&src, &s6, sizeof_src);
 #endif /* #if 0 */
 #endif /* WITH_UDPFROMTO */
 #endif /* HAVE_STRUCT_SOCKADDR_IN6 */
@@ -233,7 +237,7 @@
 	 *	No udpfromto, OR an IPv6 socket, fail gracefully.
 	 */
 	return sendto(sockfd, data, data_len, flags,
-		      (struct sockaddr *)&dst, sizeof_dst);
+		      (struct sockaddr *) &dst, sizeof_dst);
 }
 
 
@@ -298,21 +302,21 @@
 	}
 
 	if (src.ss_family == AF_INET) {
-		struct sockaddr_in	*s4;
+		struct sockaddr_in	s4;
 
-		s4 = (struct sockaddr_in *)&src;
+		memcpy(&s4, &src, sizeof(s4));
 		src_ipaddr->af = AF_INET;
-		src_ipaddr->ipaddr.ip4addr = s4->sin_addr;
-		*src_port = ntohs(s4->sin_port);
+		src_ipaddr->ipaddr.ip4addr = s4.sin_addr;
+		*src_port = ntohs(s4.sin_port);
 
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 	} else if (src.ss_family == AF_INET6) {
-		struct sockaddr_in6	*s6;
+		struct sockaddr_in6	s6;
 
-		s6 = (struct sockaddr_in6 *)&src;
+		memcpy(&s6, &src, sizeof(s6));
 		src_ipaddr->af = AF_INET6;
-		src_ipaddr->ipaddr.ip6addr = s6->sin6_addr;
-		*src_port = ntohs(s6->sin6_port);
+		src_ipaddr->ipaddr.ip6addr = s6.sin6_addr;
+		*src_port = ntohs(s6.sin6_port);
 
 #endif
 	} else {
@@ -435,31 +439,31 @@
 	 *	Check address families, and update src/dst ports, etc.
 	 */
 	if (src.ss_family == AF_INET) {
-		struct sockaddr_in	*s4;
+		struct sockaddr_in	s4;
 
-		s4 = (struct sockaddr_in *)&src;
+		memcpy(&s4, &src, sizeof(s4));
 		src_ipaddr->af = AF_INET;
-		src_ipaddr->ipaddr.ip4addr = s4->sin_addr;
-		*src_port = ntohs(s4->sin_port);
+		src_ipaddr->ipaddr.ip4addr = s4.sin_addr;
+		*src_port = ntohs(s4.sin_port);
 
-		s4 = (struct sockaddr_in *)&dst;
+		memcpy(&s4, &dst, sizeof(s4));
 		dst_ipaddr->af = AF_INET;
-		dst_ipaddr->ipaddr.ip4addr = s4->sin_addr;
-		*dst_port = ntohs(s4->sin_port);
+		dst_ipaddr->ipaddr.ip4addr = s4.sin_addr;
+		*dst_port = ntohs(s4.sin_port);
 
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 	} else if (src.ss_family == AF_INET6) {
-		struct sockaddr_in6	*s6;
+		struct sockaddr_in6	s6;
 
-		s6 = (struct sockaddr_in6 *)&src;
+		memcpy(&s6, &src, sizeof(s6));
 		src_ipaddr->af = AF_INET6;
-		src_ipaddr->ipaddr.ip6addr = s6->sin6_addr;
-		*src_port = ntohs(s6->sin6_port);
+		src_ipaddr->ipaddr.ip6addr = s6.sin6_addr;
+		*src_port = ntohs(s6.sin6_port);
 
-		s6 = (struct sockaddr_in6 *)&dst;
+		memcpy(&s6, &dst, sizeof(s6));
 		dst_ipaddr->af = AF_INET6;
-		dst_ipaddr->ipaddr.ip6addr = s6->sin6_addr;
-		*dst_port = ntohs(s6->sin6_port);
+		dst_ipaddr->ipaddr.ip6addr = s6.sin6_addr;
+		*dst_port = ntohs(s6.sin6_port);
 #endif
 	} else {
 		free(buf);
@@ -1108,7 +1112,7 @@
 		return -1;
 	}
 
-	memcpy(packet->data, data, packet->data_len);
+	memcpy(packet->data, hdr, packet->data_len);
 	hdr = (radius_packet_t *) packet->data;
 
 	total_length = htons(total_length);
--- freeradius-2.0.4+dfsg.orig/src/main/listen.c
+++ freeradius-2.0.4+dfsg/src/main/listen.c
@@ -1,7 +1,7 @@
 /*
  * listen.c	Handle socket stuff
  *
- * Version:	$Id: listen.c,v 1.122 2008/04/20 15:00:06 aland Exp $
+ * Version:	$Id: listen.c,v 1.123 2008/05/29 15:00:54 aland Exp $
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -22,7 +22,7 @@
  */
 
 #include <freeradius-devel/ident.h>
-RCSID("$Id: listen.c,v 1.122 2008/04/20 15:00:06 aland Exp $")
+RCSID("$Id: listen.c,v 1.123 2008/05/29 15:00:54 aland Exp $")
 
 #include <freeradius-devel/radiusd.h>
 #include <freeradius-devel/radius_snmp.h>
@@ -899,19 +899,19 @@
 		}
 
 		if (src.ss_family == AF_INET) {
-			struct sockaddr_in	*s4;
+			struct sockaddr_in	s4;
 			
-			s4 = (struct sockaddr_in *)&src;
-			sock->ipaddr.ipaddr.ip4addr = s4->sin_addr;
-			sock->port = ntohs(s4->sin_port);
+			memcpy(&s4, &src, sizeof(s4));
+			sock->ipaddr.ipaddr.ip4addr = s4.sin_addr;
+			sock->port = ntohs(s4.sin_port);
 			
 #ifdef HAVE_STRUCT_SOCKADDR_IN6
 		} else if (src.ss_family == AF_INET6) {
-			struct sockaddr_in6	*s6;
+			struct sockaddr_in6	s6;
 			
-			s6 = (struct sockaddr_in6 *)&src;
-			sock->ipaddr.ipaddr.ip6addr = s6->sin6_addr;
-			sock->port = ntohs(s6->sin6_port);
+			memcpy(&s6, &src, sizeof(s6));
+			sock->ipaddr.ipaddr.ip6addr = s6.sin6_addr;
+			sock->port = ntohs(s6.sin6_port);
 #endif
 		} else {
 			radlog(L_ERR, "Socket has unsupported address family");
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_perl/rlm_perl.c
+++ freeradius-2.0.4+dfsg/src/modules/rlm_perl/rlm_perl.c
@@ -717,10 +717,13 @@
 	HV		*rad_request_proxy_reply_hv;
 	AV		*end_AV;
 
-	char *embed[4];
+	char **embed;
+        char **envp = NULL;
 	const char *xlat_name;
 	int exitstatus = 0, argc=0;
 
+        embed = rad_malloc(4*(sizeof(char *)));
+        memset(embed, 0, sizeof(4*(sizeof(char *))));
 	/*
 	 *	Set up a storage area for instance data
 	 */
@@ -749,6 +752,7 @@
 		argc = 3;
 	}
 
+        PERL_SYS_INIT3(&argc, &embed, &envp);
 #ifdef USE_ITHREADS
 	inst->perl = interp;
 
@@ -1296,6 +1300,7 @@
 	perl_free(inst->perl);
 #endif
 
+        PERL_SYS_TERM();
 	free(inst);
 	return exitstatus;
 }
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sql/drivers/rlm_sql_iodbc/Makefile.in
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sql/drivers/rlm_sql_iodbc/Makefile.in
@@ -4,5 +4,6 @@
 SRCS           = sql_iodbc.c
 RLM_SQL_CFLAGS = @sql_iodbc_cflags@ $(INCLTDL)
 RLM_SQL_LIBS   = @sql_iodbc_ldflags@
+RLM_LIBS      += $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sql/drivers/rlm_sql_mysql/Makefile.in
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sql/drivers/rlm_sql_mysql/Makefile.in
@@ -4,5 +4,6 @@
 SRCS           = sql_mysql.c
 RLM_SQL_CFLAGS = @sql_mysql_cflags@ $(INCLTDL)
 RLM_SQL_LIBS   = @sql_mysql_ldflags@
+RLM_LIBS       += $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sql/drivers/rlm_sql_postgresql/Makefile.in
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sql/drivers/rlm_sql_postgresql/Makefile.in
@@ -4,5 +4,6 @@
 SRCS		= sql_postgresql.c
 RLM_SQL_CFLAGS	= @postgresql_cflags@ $(INCLTDL)
 RLM_SQL_LIBS	= @postgresql_ldflags@
+RLM_LIBS       += $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sql_log/Makefile
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sql_log/Makefile
@@ -6,5 +6,6 @@
 
 TARGET      = rlm_sql_log
 SRCS        = rlm_sql_log.c
+RLM_LIBS    += $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sqlcounter/Makefile.in
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sqlcounter/Makefile.in
@@ -6,7 +6,7 @@
 SRCS        = rlm_sqlcounter.c
 HEADERS     =
 RLM_CFLAGS  = @sqlcounter_cflags@
-RLM_LIBS    = @sqlcounter_ldflags@
+RLM_LIBS    = @sqlcounter_ldflags@ $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 RLM_INSTALL =
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/src/modules/rlm_sqlippool/Makefile.in
+++ freeradius-2.0.4+dfsg/src/modules/rlm_sqlippool/Makefile.in
@@ -8,7 +8,7 @@
 SRCS        = rlm_sqlippool.c
 HEADERS     = $(top_builddir)/src/modules/rlm_sql/rlm_sql.h
 RLM_CFLAGS  = -I$(top_builddir)/src/modules/rlm_sql $(INCLTDL)
-RLM_LIBS    =
+RLM_LIBS    += $(top_builddir)/src/modules/rlm_sql/.libs/rlm_sql.la
 RLM_INSTALL =
 
 include ../rules.mak
--- freeradius-2.0.4+dfsg.orig/debian/rules
+++ freeradius-2.0.4+dfsg/debian/rules
@@ -153,6 +153,8 @@
 	dh_testdir
 	dh_testroot
 	dh_installdirs -s
+	test -d $(freeradius_dir)/usr/lib/freeradius || mkdir -p $(freeradius_dir)/usr/lib/freeradius
+	ln -s rlm_sql.so $(freeradius_dir)/usr/lib/freeradius/librlm_sql.so
 	$(MAKE) install R=$(freeradius_dir)
 	
 	# rename radius binary to play nicely with others
@@ -192,7 +194,7 @@
 	dh_installpam --name=radiusd 
 	dh_installinit --noscripts
 	dh_installman
-	dh_lintian
+	# dh_lintian
 	dh_link
 	dh_compress -Xexamples
 	dh_fixperms
--- freeradius-2.0.4+dfsg.orig/debian/freeradius.postinst
+++ freeradius-2.0.4+dfsg/debian/freeradius.postinst
@@ -12,11 +12,13 @@
 
           # Set up initial permissions on all the freeradius directories
 
-          for dir in /var/run/freeradius /var/log/freeradius; do 
-            if ! dpkg-statoverride --list | grep -q $dir$; then
-              dpkg-statoverride --add --update freerad freerad 0755 $dir
-            fi
-          done
+          if ! dpkg-statoverride --list | grep -q /var/run/freeradius$; then
+            dpkg-statoverride --add --update freerad freerad 0755 /var/run/freeradius
+          fi
+
+          if ! dpkg-statoverride --list | grep -q /var/log/freeradius$; then
+            dpkg-statoverride --add --update freerad freerad 0750 /var/log/freeradius
+          fi
 
           for file in radius.log radwtmp; do
             [ ! -f "/var/log/freeradius/${file}" ] && install -o freerad -g freerad -m 644 /dev/null /var/log/freeradius/${file}
--- freeradius-2.0.4+dfsg.orig/debian/freeradius.links
+++ freeradius-2.0.4+dfsg/debian/freeradius.links
@@ -0,0 +1,2 @@
+etc/freeradius/sites-available/inner-tunnel etc/freeradius/sites-enabled/inner-tunnel
+etc/freeradius/sites-available/default etc/freeradius/sites-enabled/default
--- freeradius-2.0.4+dfsg.orig/debian/control
+++ freeradius-2.0.4+dfsg/debian/control
@@ -1,5 +1,5 @@
 Source: freeradius
-Build-Depends: autotools-dev, debhelper (>= 6.0.7), libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev
+Build-Depends: autotools-dev, debhelper, libgdbm-dev, libiodbc2-dev, libkrb5-dev, libldap2-dev, libltdl3-dev, libmysqlclient15-dev | libmysqlclient-dev, libpam0g-dev, libpcap-dev, libperl-dev, libpq-dev, libsasl2-dev, libsnmp-dev, libtool, python-dev
 Section: net
 Priority: optional
 Maintainer: Stephen Gran <sgran@debian.org>
--- freeradius-2.0.4+dfsg.orig/debian/changelog
+++ freeradius-2.0.4+dfsg/debian/changelog
@@ -1,3 +1,62 @@
+freeradius (2.0.4+dfsg-6~bpo40+1) etch-backports; urgency=low
+
+  * Rebuild for etch-backports.
+  * Drop unneeded versioned dependency to dh 6, as debian/compat is still 5
+  * drop dh_lintian from debian/rules
+
+ -- Martin Zobel-Helas <zobel@debian.org>  Thu, 09 Apr 2009 10:57:25 +0200
+
+freeradius (2.0.4+dfsg-6) unstable; urgency=low
+
+  * Fix unsafe use of tempfile (closes: #496389)
+
+ -- Stephen Gran <sgran@debian.org>  Mon, 25 Aug 2008 14:18:48 +0100
+
+freeradius (2.0.4+dfsg-5) unstable; urgency=low
+
+  [ Mark Hymers ]
+  * Cherry pick commit from 2.0.5 which fixes port binding issues.
+    Closes: #489773.
+
+  [ Stephen Gran ]
+  * add PERL_SYS_INIT3 and PERL_SYS_TERM calls to rlm_perl. (closes: #495073)
+  * Make the SQL modules link against rlm_sql.so in the most horrific
+    (and only) way possible.  (closes: #448699)
+
+ -- Stephen Gran <sgran@debian.org>  Thu, 14 Aug 2008 19:15:30 +0100
+
+freeradius (2.0.4+dfsg-4) unstable; urgency=low
+
+  * Create links from sites-enabled to sites-available for the files that
+    upstream enables by default (closes: #483914)
+
+ -- Stephen Gran <sgran@debian.org>  Sun, 01 Jun 2008 12:24:35 +0100
+
+freeradius (2.0.4+dfsg-3) unstable; urgency=low
+
+  * brown paper bag release
+  * Really actually do the statoverride I thought we were doing with -2
+    (closes: #482380)
+
+ -- Stephen Gran <sgran@debian.org>  Thu, 22 May 2008 11:18:12 +0100
+
+freeradius (2.0.4+dfsg-2) unstable; urgency=low
+
+  * Install /var/log/freeradius 0750 so that people writing their passwords to
+    logfiles don't accidentally leak them without noticing (closes: #482085)
+
+ -- Stephen Gran <sgran@debian.org>  Tue, 20 May 2008 19:38:27 +0100
+
+freeradius (2.0.4+dfsg-1) unstable; urgency=low
+
+  * Ok, actually remove all the cruft in debian/ shipped by upstream.  This
+    means repacking the tarball and all that, but it also means dpkg-source
+    won't get the chance to ignore removed files, resulting in files
+    reappearing, but not locally (closes: #481406)
+  * Also remove config.{cache,log} in clean target - damn you gitignore
+
+ -- Stephen Gran <sgran@debian.org>  Mon, 19 May 2008 03:55:55 +0100
+
 freeradius (2.0.4-3) unstable; urgency=low
 
   * I have no god damn idea why the buildds are adding manpages to the wrong
--- freeradius-2.0.4+dfsg.orig/.gitignore
+++ freeradius-2.0.4+dfsg/.gitignore
@@ -0,0 +1,14 @@
+*.la
+*.o
+*.lo
+.libs
+.deps
+build-arch-stamp
+build-indep-stamp
+config.h
+config.log
+config.status
+config.cache
+config.guess.dist
+config.sub.dist
+Make.inc
