diff --git a/xtrn/sbl/sbl.c b/xtrn/sbl/sbl.c
index 91f413c9981ee87a29edff5a3403471d035f8e92..efa3b2f24c1b3eb750e8e92d8ec33986ddd48f1a 100644
--- a/xtrn/sbl/sbl.c
+++ b/xtrn/sbl/sbl.c
@@ -942,7 +942,7 @@ int main(int argc, char **argv)
 				while(!feof(stream) && !aborted) {
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!bbs.name[0]) {
+					if(!bbs.name[0] && bbs.total_numbers>0) {
 						bbs.name[0]='?';
 						bbs.verified=time(NULL);
 						sprintf(bbs.userverified,"%.25s",user_name);
@@ -964,7 +964,7 @@ int main(int argc, char **argv)
 				while(!feof(stream) && !aborted) {
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!bbs.name[0])
+					if(!bbs.name[0] || bbs.total_numbers<1)
 						continue;
 					i++;
 					if(!short_bbs_info(bbs))
@@ -1010,6 +1010,8 @@ int main(int argc, char **argv)
 				while(!feof(stream) && !aborted) {
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
+					if(!bbs.name[0] || bbs.total_numbers<1)
+						continue;
 					i=long_bbs_info(bbs);
 					if(bbs.name[0] && !i)
 						break;
@@ -1040,7 +1042,7 @@ int main(int argc, char **argv)
 						lncntr=0;
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!bbs.name[0])
+					if(!bbs.name[0] || bbs.total_numbers<1)
 						continue;
 					tmpbbs=bbs;
 					strupr(tmpbbs.name);
@@ -1169,6 +1171,8 @@ int main(int argc, char **argv)
 					bprintf("\b\b\b\b%4u",j);
 					if(!bbs.name[0])	/* don't sort deleted entries */
 						continue;
+					if(bbs.total_numbers<1)	/* don't sort corrupted entries */
+						continue;
 					i++;
 					switch(ch) {
 						case 'N':
@@ -1288,7 +1292,7 @@ int main(int argc, char **argv)
 						lncntr=0;
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!bbs.name[0])
+					if(!bbs.name[0] || bbs.total_numbers<1)
 						continue;
 					if(ch && !long_bbs_info(bbs))
 						break;
@@ -1315,7 +1319,7 @@ int main(int argc, char **argv)
 						lncntr=0;
 					if(!fread(&bbs,sizeof(bbs_t),1,stream))
 						break;
-					if(!bbs.name[0])
+					if(!bbs.name[0] || bbs.total_numbers<1)
 						continue;
 					if(bbs.updated>=l || bbs.created>=l) {
 						if(ch && !long_bbs_info(bbs))
diff --git a/xtrn/sbl/sbl2smb.c b/xtrn/sbl/sbl2smb.c
index e96f92ff0ddb8643f4d371062088804b556617b2..b67ae606c2367e16a084a971f5233fae4bb276e8 100644
--- a/xtrn/sbl/sbl2smb.c
+++ b/xtrn/sbl/sbl2smb.c
@@ -210,14 +210,25 @@ int main(int argc, char **argv)
 	while(!feof(stream)) {
 		if(!fread(&bbs,sizeof(bbs_t),1,stream))
 			break;
+		if(bbs.total_numbers<1		/* corrupted? */
+			|| bbs.total_numbers>MAX_NUMBERS)
+			continue;
 		truncsp(bbs.name);
-		if(!bbs.name[0] || bbs.misc&FROM_SMB
+		if(bbs.name[0]<=' '			/* corrupted? */
+			|| bbs.misc&FROM_SMB
 			|| (bbs.updated<last && bbs.created<last 
 				&& bbs.verified<last))
 			continue;
 		if(software[0] && strnicmp(software,bbs.software,strlen(software)))
 			continue;
 
+		truncsp(bbs.user);
+		if(bbs.user[0]<=' ')		/* corrupted? */
+			continue;
+		truncsp(bbs.software);
+		if(bbs.software[0]<=' ')	/* corrupted? */
+			continue;
+
 		printf("%s\r\n",bbs.name);
 		memset(buf,0,BUF_LEN);
 
@@ -229,7 +240,6 @@ int main(int argc, char **argv)
 			,"Birth:",unixtodstr(bbs.birth,tmp));
 		strcat(buf,str);
 
-		truncsp(bbs.software);
 		sprintf(str,"%-15.15s%s\r\n"
 			,"Software:",bbs.software);
 		strcat(buf,str);
@@ -375,7 +385,6 @@ int main(int argc, char **argv)
 		strlwr(str);
 		msg.idx.to=crc16(str);
 
-		truncsp(bbs.user);
 		strcpy(str,bbs.user);
 		i=smb_hfield(&msg,SENDER,(ushort)strlen(str),str);
 		if(i) {
diff --git a/xtrn/sbl/smb2sbl.c b/xtrn/sbl/smb2sbl.c
index 99e814cc0250639679086a5b430fb45b23a1e1d4..e05e1f68a3f1368260da9ec6b3e437d046fa779b 100644
--- a/xtrn/sbl/smb2sbl.c
+++ b/xtrn/sbl/smb2sbl.c
@@ -287,9 +287,13 @@ int main(int argc, char **argv)
 			printf("\7Error %d reading msg #%lu\n",i,msg.idx.number);
 			continue; }
 		smb_unlockmsghdr(&smb,&msg);
-		if(!msg.from_net.type) {		/* ignore local message */
+		if(!msg.from_net.type			/* ignore local message */
+			|| msg.from[0]<=' '			/* corrupted? */
+			|| msg.subj[0]<=' '			/* corrupted */
+			) {
 			smb_freemsgmem(&msg);
-			continue; }
+			continue; 
+		}
 
 		printf("\nMessage #%lu by %s on %.24s\n"
 			,msg.hdr.number,msg.from,ctime(&(time_t)msg.hdr.when_written.time));