$NetBSD$

--- source/parse.c.orig	2014-11-03 11:26:13.000000000 +0100
+++ source/parse.c	2014-12-18 16:33:04.000000000 +0100
@@ -1489,10 +1489,11 @@
 	char *target;
 	char *line;
 	int	flag;
+	size_t	linelen;
 	
 	ChannelList *chan = NULL;
 	ChannelList *chan2 = get_server_channels(from_server);
-	char buffer[BIG_BUFFER_SIZE+1];		
+	char *buffer;
 	char *smode;
 	char *display_uh = FromUserHost[0] ? FromUserHost : "*";
 #ifdef COMPRESS_MODES
@@ -1508,7 +1509,13 @@
 
 	if (target && line)
 	{
-		strcpy(buffer, line);
+		buffer = malloc(linelen = strlen(line));
+		if (!buffer)
+		{
+			perror("malloc");
+			return;
+		}
+		strncpy(buffer, line, linelen);
 		if (get_int_var(MODE_STRIPPER_VAR))
 			strip_modes(from, target, line);
 		if (is_channel(target))
@@ -1562,6 +1569,7 @@
 			logmsg(LOG_MODE_USER, from, 0, "%s %s", target, line);
 		}
 		update_all_status(current_window, NULL, 0);
+		free(buffer);
 	}
 #ifdef GUI
 	gui_update_nicklist(target);
