Index: ebook2cw.c
--- ebook2cw.c.orig
+++ ebook2cw.c
@@ -394,7 +394,7 @@ cw.encoding = UTF8;
     else {
     	sscanf(querystring, "s=%d&e=%d&f=%d&t=%9000s", &cw.wpm, &cw.farnsworth, &cw.freq, text);
     }
-	strcat(text, " ");
+	strlcat(text, " ", sizeof(text));
 	urldecode(text);
 
     if (cw.wpm == 0 || cw.freq == 0) {
@@ -407,7 +407,7 @@ cw.encoding = UTF8;
 	init_cw(&cw);	/* generate raw dit, dah */
 
 	if (strlen(cw.chapterstr)) {
-		strcat(cw.chapterstr, " ");
+		strlcat(cw.chapterstr, " ", sizeof(cw.chapterstr));
 	}
 
 	cw.original_wpm = cw.wpm;					/* may be changed by QRQing */
@@ -1496,7 +1496,7 @@ char *mapstring (char * string, CWP *cw) {
 						break;
 					}
 					else if (cw->isomapindex[i] == c) {
-						strcat(new, cw->isomap[i]);
+						strlcat(new, cw->isomap[i], sizeof(new));
 						replaced = 1;
 						break;
 					}
@@ -1529,7 +1529,7 @@ char *mapstring (char * string, CWP *cw) {
 						break;
 					}
 					else if (cw->utf8mapindex[i] == j) {
-						strcat(new, cw->utf8map[i]);
+						strlcat(new, cw->utf8map[i], sizeof(new));
 						replaced = 1;
 						break;
 					}
@@ -2090,8 +2090,8 @@ void init_cwp (CWP *cw) {
 	cw->noisebuf_size = NOISEBUFFER;
 	cw->mp3buffer_size = MP3BUFFER;
 	cw->ditlen = 0;
-	strcpy(cw->chapterstr, _("CHAPTER"));
-	strcpy(cw->chapterfilename, _("Chapter"));
+	strncpy(cw->chapterstr, _("CHAPTER"), sizeof(cw->chapterstr));
+	strncpy(cw->chapterfilename, _("Chapter"), sizeof(cw->chapterfilename));
 
 	cw->chaptertime = 0;
 	cw->chapterwords = 0;
@@ -2104,12 +2104,12 @@ void init_cwp (CWP *cw) {
 	cw->linecount = 1;
 	cw->linepos = 0;
 
-	strcpy(cw->configfile, "ebook2cw.conf");
+	strncpy(cw->configfile, "ebook2cw.conf", sizeof(cw->configfile));
 
-	strcpy(cw->id3_author, _("CW audio book"));
-	strcpy(cw->id3_title, "");
-	strcpy(cw->id3_comment, _("Generated by ebook2cw"));
-	strcpy(cw->id3_year, "");
+	strncpy(cw->id3_author, _("CW audio book"), sizeof(cw->id3_author));
+	strncpy(cw->id3_title, "", sizeof(cw->id3_title));
+	strncpy(cw->id3_comment, _("Generated by ebook2cw"), sizeof(cw->id3_comment));
+	strncpy(cw->id3_year, "", sizeof(cw->id3_year));
 
 	cw->outfile_length = 0;
 
