Subj : src/sbbs3/chksmb.c fixsmb.c smbutil.c src/smblib/smblib.c smblib.h To : Git commit to main/sbbs/master From : Rob Swindell (on Debian Linux) Date : Tue Sep 29 2026 19:00:50 https://gitlab.synchro.net/main/sbbs/-/commit/343738828ef6d998fea6a281 Modified Files: src/sbbs3/chksmb.c fixsmb.c smbutil.c src/smblib/smblib.c smblib.h Log Message: fixsmb/chksmb/smbutil: don't skip headers after a corrupt one fixsmb, chksmb and the analysis pass of smbutil pack step from one header to the next by the header's calculated length (the sum of its fields). When a header is damaged so that its fields add up to more than its stored length (a field length overwritten, or its tail zeroed), that step jumps over the headers that follow: fixsmb leaves them out of the index it rebuilds, and chksmb neither counts them nor reports them as orphaned. New smb_msghdrblocks() returns the blocks a header occupies for this purpose: the lesser of its stored and calculated lengths, and at least one block. The two differ only for a damaged header; a header is rewritten in place only when its new length fits in the blocks it already has. fixsmb also treated a live header as a duplicate, and left it out of the index, when a deleted header with the same message number came before it. That is the normal state of a header that grew and was relocated (the old copy is marked deleted), so such messages were dropped from the rebuilt index. Deleted headers no longer count toward duplicate numbers, unless -undelete is given. Co-Authored-By: Claude Opus 5.5 --- SBBSecho 3.37-Linux * Origin: Vertrauen - [vert/cvs/bbs].synchro.net (1:103/705) .