--- sbbs/src/sbbs3/chksmb.c 2018/04/24 16:41:23 1.1 +++ sbbs/src/sbbs3/chksmb.c 2018/04/24 16:42:47 1.1.1.2 @@ -2,13 +2,13 @@ /* Synchronet message base (SMB) validity checker */ -/* $Id: chksmb.c,v 1.1 2018/04/24 16:41:23 root Exp $ */ +/* $Id: chksmb.c,v 1.1.1.2 2018/04/24 16:42:47 root Exp $ */ /**************************************************************************** * @format.tab-size 4 (Plain Text/Source Code File Header) * * @format.use-tabs true (see http://www.synchro.net/ptsc_hdr.html) * * * - * Copyright 2005 Rob Swindell - http://www.synchro.net/copyright.html * + * Copyright 2009 Rob Swindell - http://www.synchro.net/copyright.html * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * @@ -118,18 +118,20 @@ char *usage="\nusage: chksmb [-opts] flags&SMB_HASH_MARKED) @@ -593,6 +598,8 @@ int main(int argc, char **argv) ,((msg.hdr.offset+msg.dfield[n].offset)/SDT_BLOCK_LEN)*2 ,SEEK_SET); for(m=0;m smb.status.last_msg) + fprintf(stderr,"\r%sInvalid message number (%u)\n", beep, hash.number), badhash++; + else if(hash.time < 0x40000000 || hash.time > (ulong)now) + fprintf(stderr,"\r%sInvalid time (0x%08lX)\n", beep, hash.time), badhash++; + else if(hash.length < 1 || hash.length > 1024*1024) + fprintf(stderr,"\r%sInvalid length (%lu)\n", beep, hash.length), badhash++; + else if(hash.source >= SMB_HASH_SOURCE_TYPES) + fprintf(stderr,"\r%sInvalid source type (%u)\n", beep, hash.source), badhash++; + } + + smb_close_hash(&smb); + + fprintf(stderr,"\r%79s\r100%%\n",""); + } + + totalmsgs+=smb.status.total_msgs; totalmsgbytes+=(acthdrblocks*SHD_BLOCK_LEN)+(actdatblocks*SDT_BLOCK_LEN); totaldelmsgs+=deleted; @@ -907,13 +944,17 @@ int main(int argc, char **argv) ,"Invalid Data Field Lengths" ,dfieldlength); + if(badhash) + printf("%-35.35s (!): %lu\n" + ,"Invalid Hash Entries" + ,badhash); printf("\n%s Message Base ",smb.file); if(/* (headers-deleted)!=smb.status.total_msgs || */ total!=smb.status.total_msgs || (headers-deleted)!=total-delidx || idxzeronum || zeronum - || hdrlenerr || hasherr + || hdrlenerr || hasherr || badhash || getbodyerr || gettailerr || orphan || dupenumhdr || dupenum || dupeoff || attr || lockerr || hdrerr || hdrnumerr || idxnumerr || idxofferr