• src/sbbs3/getmsg.cpp

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Wed May 6 22:36:57 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/55eaccec35c18dc552485d8a
    Modified Files:
    src/sbbs3/getmsg.cpp
    Log Message:
    getmsg: guard idx.number underflow in getmsgnum (CID 530525)

    When smb_getmsgidx_by_time succeeded but returned idx.number == 0
    (should not happen for valid messages, but defensively), 'idx.number - 1' underflowed uint32_t and produced 0xFFFFFFFF == ~0, the function's
    error sentinel — accidentally correct, but undefined per signed-int
    return. Make the zero-number case explicitly return ~0.

    Co-Authored-By: Claude Opus 4.7 <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 Tue Sep 29 15:57:27 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c9ab235a137b8a83e8311db7
    Modified Files:
    src/sbbs3/getmsg.cpp
    Log Message:
    Message listings: don't emit control chars from UTF-8 header fields

    Converting a UTF-8 header field to CP437 can yield a control character:
    U+263A (white smiling face) maps to 0x01, i.e. Ctrl-A. Since a81d979492 (teeth-19-temp, 2026-07-28) the message/mail listings pass the converted
    fields through bputs(), which interprets such bytes rather than displaying them. A subject ending in U+263A put "\1\r\n" at the end of its line: the Ctrl-A consumed the CR (toggling CON_ECHO_OFF for users without flag M),
    and the bare LF left the column at the P_TRUNCATE limit, so the entire next listing line was truncated to nothing.

    msghdr_field() now replaces any control character in the converted field
    with the inverted question mark used for unsupported code points.

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

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