diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c
index d54aec3b1f627d0c1b6555dc032a92a8b4788727..145c383e587f6945d725300a0c8c7fbf529193a2 100644
--- a/src/sbbs3/sbbsecho.c
+++ b/src/sbbs3/sbbsecho.c
@@ -3809,12 +3809,17 @@ void export_echomail(char *sub_code,faddr_t addr)
 char* freadstr(FILE* fp, char* str, size_t maxlen)
 {
 	int		ch;
+	size_t	rd=0;
 	size_t	len=0;
 
-	while((ch=fgetc(fp))!=EOF && len<maxlen) {
-		str[len++]=ch;
+	memset(str,0,maxlen);	/* pre-terminate */
+
+	while(rd<maxlen && (ch=fgetc(fp))!=EOF) {
 		if(ch==0)
 			break;
+		if((uchar)ch>=' ')	/* not a ctrl char (garbage?) */
+			str[len++]=ch;
+		rd++;
 	}
 
 	str[maxlen-1]=0;	/* Force terminator */