--- freeradius-server-3.0.2-sql-patch/src/modules/rlm_sql/sql.c	2014-04-10 08:17:38.810079041 +0200
+++ freeradius-server-3.0.2-sql-patch2/src/modules/rlm_sql/sql.c	2014-04-10 08:47:13.598451683 +0200
@@ -31,6 +31,8 @@ RCSID("$Id: 647150985b09c44a53fcb12e329d
 
 #include	<sys/file.h>
 #include	<sys/stat.h>
+#include	<alloca.h>
+#include	<string.h>
 
 #include	<ctype.h>
 
@@ -507,7 +509,7 @@ void rlm_sql_query_log(rlm_sql_t *inst,
 {
 	int fd;
 	char const *filename = NULL;
-	char *expanded = NULL;
+	char *expanded = NULL, *wquery;
 	size_t len;
 	bool failed = false;	/* Write the log message outside of the critical region */
 
@@ -535,10 +537,14 @@ void rlm_sql_query_log(rlm_sql_t *inst,
 	}
 
 	len = strlen(query);
+	wquery = alloca(len+3);
+	memcpy(wquery, query, len);
+	memcpy(wquery+len, ";\n", 3);
+	len += 2;
 #ifdef HAVE_PTHREAD_H
 	pthread_mutex_lock(&inst->log);
 #endif
-	if ((rad_lockfd(fd, len + 2) < 0) || (write(fd, query, len) < 0) || (write(fd, ";\n", 2) < 0)) {
+	if ((rad_lockfd(fd, len) < 0) || (write(fd, wquery, len) < 0)) {
 		failed = true;
 	}
 #ifdef HAVE_PTHREAD_H
