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));