• src/smblib/smbfile.c

    From Rob Swindell@VERT to Git commit to main/sbbs/master on Thursday, February 04, 2021 21:15:15
    https://gitlab.synchro.net/main/sbbs/-/commit/30391a1fae6fa5a725a276ef
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Upon timeout opening a file, log the last errno value too

    It should be either EACCESS or EAGAIN, but still, could be useful to know.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Wednesday, May 12, 2021 21:07:14
    https://gitlab.synchro.net/main/sbbs/-/commit/cfee914fed60488a51a62dc5
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Fix crash in smb_addfile_withlist() when passed a non-NULL empty list

    Don't allocate and memset a buffer of -1:
    #1 0x0000559222bc167f in strListCombine (list=0x559224220720, buf=0x559224226550 "", maxlen=18446744073709551615,
    delimit=0x559222bcce0a "\r\n") at str_list.c:447
    447 memset(buf, 0, maxlen);
    (gdb) print maxlen
    $1 = 18446744073709551615
    (gdb) up
    #2 0x0000559222ba3841 in smb_addfile_withlist (smb=0x7ffce63a7e90, file=0x7ffce63a5bc0, storage=1, extdesc=0x0,
    list=0x559224220720, path=0x7ffce63a6e80 "/xfer/loons/manhater.mp3") at smbfile.c:365
    365 strListCombine(list, content, size - 1, "\r\n");
    (gdb) print list
    $2 = (str_list_t) 0x559224220720
    (gdb) print list[0]
    $3 = 0x0

    Found/reported by plt via irc. Thanks!

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell@VERT to Git commit to main/sbbs/master on Thursday, May 13, 2021 18:57:59
    https://gitlab.synchro.net/main/sbbs/-/commit/34aeeb6d4b688a168058707a
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    smb_removefile() failed if filename length was > 64 chars

    And the "name not found" error text was wrong.

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Sunday, December 24, 2023 21:51:36
    https://gitlab.synchro.net/main/sbbs/-/commit/43575170940c3ff3a9017eee
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Reset import time (to current date/time) in smb_renewfile()

    Don't allow smb_removefile() to corrupt a filebase if passed an uninitialized (not fully load()'d) file_t*. Doesn't fix a bug, just some extra defensive programming here.

    Addressing problems reported by echicken

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tuesday, December 26, 2023 16:04:06
    https://gitlab.synchro.net/main/sbbs/-/commit/46c0eb0de29bab7607bfb0ef
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    Fix CID 471656 in smb_addfile_withlist()

    No one's using this function currently (and may never).

    It was used back when I was putting archive contents in .ini format in the files' metadata (now auxdata).

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows 11)@VERT to Git commit to main/sbbs/master on Tuesday, September 17, 2024 12:06:15
    https://gitlab.synchro.net/main/sbbs/-/commit/45363fee6f6d688671faeee0
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    NUL-terminate the SMB fileidxrec_t.name field, just in case

    The terminating NUL is actually part of the index record, but with file corruption, it's technically possible the NUL could be missing.
    Fixes CID 509552

    Use strnicmp() insted of stricmp() in smb_removefile()
    Fixes CID 509551

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Tuesday, September 29, 2026 17:07:32
    https://gitlab.synchro.net/main/sbbs/-/commit/662b2f6d1a71988779d94f46
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    smb_removefile(): remove only the file's own index record

    Removing a file dropped every index record whose name matched the file's, ignoring case, not just its own. In a base holding names that differ only
    in case (e.g. a.txt and A.txt), removing either one also dropped the
    other's index record, orphaning its header and data: still active in the
    base, but no longer findable or listed.

    Identify the record by the number in the index record the file was loaded
    from. The header carries the same number, but nothing checks the two agree
    on read, and a header whose number no longer matched would leave the
    file's index record in place, pointing at a header already marked deleted.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Tuesday, September 29, 2026 17:07:32
    https://gitlab.synchro.net/main/sbbs/-/commit/f11e0cc003d712457ab29917
    Modified Files:
    src/smblib/smbfile.c
    Log Message:
    smb_findfile(): prefer an exact-case name match

    A file name lookup returned the first index record matching the name
    while ignoring case. When a base holds names that differ only in case,
    the later of them could never be found by name: FileBase.get(), update(),
    and remove() all reached the earlier file instead, whatever case the
    caller gave.

    Return an exact-case match when there is one, and otherwise the first case-insensitive match as before. A lookup given the stored case still
    stops at the first match; one given a different case now reads the rest
    of the index, as a lookup of a name that isn't there already does.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net