• src/syncterm/ripper.c

    From Deuce@VERT to Git commit to sbbs/master on Fri Sep 4 13:10:24 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/510c424ae04cffe8bff9582d
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    stat.st_atim.tv_sec -> stat.st_atime
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Tue Nov 10 12:55:53 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/feda0dba2b685f33191472d5
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Use sockwrap.h for arpa/inet.h and strwrap.h for stdndup()
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Sat Nov 14 00:48:57 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/ee0df4bd61c6188df34cdc92
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Stop using ASCII caret for power of two.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Sun Nov 15 23:47:05 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/480206149919a240a539cf40
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix most of the RIP issues found by coverity.

    Most are simple memory leaks, but some would cause crashes, and
    others would cause unexpected behaviour.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Stephen Hurd@VERT to Git commit to sbbs/master on Tue Nov 17 00:02:01 2020
    https://gitlab.synchro.net/sbbs/sbbs/-/commit/0f4eab23df7aab55c31b473b
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Remove duplicate fclose()
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 13 22:44:47 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/61022e183d56d3e58411a441
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Don't make parse_rip() do anything when RIP is disabled.

    Should fix file transfer issues.
    (SF bug #38)
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Mar 14 22:57:48 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/21763a1df8ad975a60fe1147
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Add comments for all the things.

    Just copied out of the documentation.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue May 4 18:02:29 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/59053de5e06c260d968f7b5f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Make some changes

    Mostly tightening things up and fixed some text things.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed May 5 20:56:53 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/faca73d3d0f6ae524be38e40
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix palette calculations, and add support for RIPv2 'b' command.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thu May 6 19:06:55 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/19f0c215a6cc9402df40e158
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    More improvements...

    Consistently use map_rip_color()
    Optimize flood fill to not clobber the stack
    Fix small full ellipses to match RIPTerm 1.54
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon May 10 09:27:58 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/461d36a14af5b78d0632e3e5
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Draw the ellipse pixel when the angle is equal to start/end as well

    Being stritly less/greater causes a one pixel gap at the start/end
    of the ellipse, meaning flood fills can escape.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon May 10 09:56:33 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/37d8d708cb66298fb6848f6d
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Add extended comment on do_fill() and why it's terrible.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue May 11 09:07:54 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/498187eb3ef005678e9fa92f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix angle calculations on Win32

    Do multiple before divide, and use an lround() to get the same results
    on Win32 with mingw32 as Clang on FreeBSD.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat May 15 01:02:25 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/88480afbb740365557ff502a
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Don't guard #pragma
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed May 19 23:34:16 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/2cc6b5d95b825488dd791c64
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Use fexistcase() for RIP assets

    It seems that at least LORD has upper-case in the ZIPs and lower-case
    in the queries.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thu May 20 01:33:48 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/ab0256208977d1d2633be7f1
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    ifdef out an unused static function for now.

    It will be used in the future, so the code shouldn't be deleted,
    but not using it causes a warning.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 21 16:23:13 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/040172431ecfac608bf832a7
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix auto-transfers
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri May 21 16:23:13 2021
    https://gitlab.synchro.net/main/sbbs/-/commit/05b3074f28d0352c216db376
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Send CRLF instead of the specified CR on a file status.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Dec 20 21:18:30 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/0898c565823c2ef6dbd59741
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Separate RIP enabled from suspended.

    Previously, a file transfer would unconditionally enable RIP.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Dec 24 11:42:51 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/bc6daf3f47edd4a37873fb7f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Only check the filename for a dot, not the whole cachepath

    Fixes icon displays in RIPs that don't use the .ICN extension.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Dec 24 13:46:02 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/8fd40b34e995ee25bfe410b9
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Some ellipse improvements to fix Violet's chat bubble when she's busy.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Dec 24 22:10:13 2022
    https://gitlab.synchro.net/main/sbbs/-/commit/c3b827088b502bbeef11fe6c
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix RIP_FILE_QUERY
    ---
    ■ 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 Wed Mar 29 16:29:18 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/41cd8c3af2366120df56154c
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix GCC 12.2 warning

    warning: argument 1 value `18446744073709551608' exceeds maximum
    object size 9223372036854775807 [-Walloc-size-larger-than=]
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Apr 26 12:14:15 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/ac4a967c92244c8c12ac6398
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix Win32 console (and likely curses) crash on connect

    RIP initialization was trying to obtain a lock that only exists when
    using a bitmap console. Don't allow RIP to be enabled, and don't
    perform the operations that require the lock when the CONIO_OPT_SET_PIXEL ciolib option is not set.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Aug 2 22:57:40 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/236064ee462ca2be3b81cd77
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Properly read extended keys in non-graphics builds.

    Fixes SF issue 118
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thu Feb 15 15:04:14 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/ec4a8c96c24994cb157ac491
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Move fiddling with rip.x_max and rip.y_max out of the vstat mutex.

    Apparently, fiddling with them in there "strongly implies" to Coverity
    that vstatlock needs to be held to access them, and it's good form
    to have the lock held for the least span possible.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Mar 22 02:16:53 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/4ed27ca97ae7f21f56d038b6
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Use safer string things...

    We really need strlcpy()/strlcat() wrappers in xpdev.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Sep 27 23:15:55 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/75008b3055306224ca0272cc
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix a couple use-after-free bugs in RIP

    This likely is the cause of bug 140.

    The first one, the LCF flag is copied out of the cterm struct
    after cterm_end() is called (which frees the struct). Copy moved
    to before cterm_end().

    The second one is trickier... it's executing the commands in a mouse
    button, and one of the commands is to delete all the mouse button
    commands. This ends up free()ing the string that's currently being
    parsed while it's being parsed. We now use a strdup() of the string
    which we free at the end of the function.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Sep 27 23:40:23 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/9fefe60690d8c378c13ccd96
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix builds that don't support any graphics.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Oct 28 09:47:57 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/1a74630f9654033b92b0fe28
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    When RIP changes the vstat mode, also change the cursor

    When changing between 8 and 16 row fonts in RIP mode, the cursor
    start and end was left for the old font size... 16 -> 8 would leave
    the cursor one line below the current position, and 8 -> 16 would
    leave the cursor in the middle of the cell.

    This hacks the vstat deeper to fix up the cursor as well.

    Reported by skipperdoodle1947.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Oct 29 12:11:28 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/0a78d39dd2e3389140dff826
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix handling of broken CRLF pairs in RIP mode

    If telnet binary mode is enabled (the new default), and a CR and LF
    come in on separate recv() calls, the RIP parser would stop at the
    CR, and pass the LF back to the ANSI parser.

    Ah, dura-bbs.net, always pushing the limits.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Oct 30 09:54:01 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/9b3aa58cf998d1c1015560b3
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix up previous commit

    RIPtel reset to the font configured by the user, not the current
    font. Do the same here.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Dec 30 23:50:22 2024
    https://gitlab.synchro.net/main/sbbs/-/commit/d48528a74ff6605ef1f7aee0
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Just because we're *compiled* with graphics support doesn't mean
    we support them in the current mode.

    Fixes issue 175
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Jan 1 22:35:43 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/ea4f8b4efe0a8e5e837398c5
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Eliminate a couple more Coverity issues via temporary variables.

    This gets the assignment to the rip.* members out of the lock so
    Coverity doesn't assume they need to be protected by the lock.

    It should compile to the same thing.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Fri Jan 3 10:47:30 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/6f8678eb9e0d40dd72a0897e
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    "Range check" RIP ICN width/height to untaint them.

    This is purely to shut up Coverity since there's no way the value
    could be outside the range.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Jan 11 22:00:28 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/a98f8a44c3429b19fbef6803
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix a memory leak and an allowed out-of-bounds access.

    Thanks Coverity!
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Jan 11 22:47:06 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/444fecaf4af203b773ca5833
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Add unreachable code

    Coverity thinks it can do the default case.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Jan 18 13:08:33 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/a64e68143b0c192a44a840ff
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Do the lock assertion thing in ripper.c too.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Jan 18 16:30:06 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/f41de9a1f41359c845de5371
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Now that vstat.vmem has more stuff, ripper needs to hack up more.

    Fixes assertion/crash in 91-column mode (used in LORD intro screens)
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Jan 19 08:38:42 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/2aac6ec016aa3629c643e019
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Initialize the *new* memory, not the old stuff.

    Fixes various memory corruptions with RIP
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Jan 19 10:13:59 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/c464596b33610cc1683b69fd
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Work around what appears to be an integer promotion issue

    On an aarch64 Chromebook running gcc 12.2.0, these would wrap in
    weird ways causing vector fonts to be positioned incorrectly.

    It managed to say that (25 - -7) * 4 / 3 == -168
    This casting dance appears to resolve the issue.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Jan 22 15:06:23 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/a97b1adad05bc8aec50278bf
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix possibly undefined value in ellipse.

    Top-right quadrant doesn't need a quadrant angle, the angle is what
    we want already.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Wed Jan 22 15:33:34 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/09b2157307bcfb080f0357a8
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Attempt to silence false positive warning.

    The warning suggests that x1 and y1 may be uninitialized in the i > 0
    block, but that's not really possible...

    It's too bad the warning doesn't clarify. It's also weird that the
    warning was in the draw_line() call and not in the lines above that (incorrectly) compared them with -1.

    Fix that check while we're here.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Aug 11 07:41:45 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/da21613cf1df6e208cf050a1
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    "Fix" CID 487623

    This "defect" is incorrect, but meh.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Aug 12 18:23:31 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/7714bcbe5262a9359abccaa9
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix typo

    The final char we're looking for here is !, not 1.
    Also, suppress a new Coverity false-positive (CID 487652) while we're
    here.
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Thu Aug 14 19:11:36 2025
    https://gitlab.synchro.net/main/sbbs/-/commit/7a35f739a5182bb9c396c91b
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix the Coverity suppression maybe?
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Feb 22 11:38:19 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/f73b6e394587333ffd76521c
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Parse RIP_NO_MORE in RIP_STATE_PIPE, not RIP_STATE_CMD

    This will likely screw up on !|0#, but hopefully nobody has ever done
    that.

    Fixes ticket 218
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Mon Feb 23 16:17:52 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/27e6a20fa2b8661b46668d88
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix new potential RIP crash

    Would potentially use a negative length after a |#
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Mar 15 01:06:05 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bb2238f684befe43deb34cea
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix heap buffer overflows in ripper.c RIPscrip command handling

    Four strcat() calls append RIPscrip arguments (from the remote server)
    to cache_path[MAX_PATH+1] without checking whether the result fits.
    The path-traversal guards reject "..", "/", and "\" but do not limit
    length. A long filename from a malicious RIPscrip server overflows
    the buffer.

    Changed to strlcat(cache_path, ..., sizeof(cache_path)) at all four
    sites: file-query (&args[6]), icon-load (&args[9] + ".ICN"), and
    icon-save (&args[1]). The existing SkyPix download path already had
    a strlen() guard and was not affected.

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Mar 15 14:09:13 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/2054747bb2823818ea5d1a0d
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix multiple ripper.c security and correctness bugs

    Security fixes:
    - Add path traversal checks (..//\) to LOAD_ICON, WRITE_ICON,
    ENTER_BLOCK_MODE, and font file loading
    - Add overflow guard for ICN pixel buffer allocation (32-bit)
    - Clamp viewport coordinates to world frame dimensions
    - Cap handle_command_str recursion depth to 64
    - Fix sprintf stack overflow in FILE_QUERY case 4 (snprintf)
    - Guard parse_string NULL return in do_rip_command
    - Guard strdup NULL return in bicmp

    Correctness fixes:
    - Remove incorrect viewport offsets from EXTENDED_TEXT_WINDOW (v2+)
    - Fix MOUSE hot field y2 using viewport.sx instead of .sy
    - Fix POLY_LINE y1 init using x_dim instead of y_dim
    - Fix conn_send length for FILE_QUERY \r\n responses (2 -> 3)
    - Fix draw_pixel XOR mode memory leak (freepixels before return)
    - Fix ansi_only() missing break before fall-through
    - Reject zero dimensions in SET_WORLD_FRAME
    - Clamp do_popup dimensions to screen size
    - Fix init_rip_ver memory leaks (mouse fields, clipboard, scb)
    - Add Amiga font file validation at load time
    - Add per-case argc checks in do_skypix
    - Handle realloc failure in reinit_screen gracefully
    - Add NULL checks for getpixels in set_line and flood fill

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Sun Mar 15 22:51:39 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5ca54e09393c1068e32e599f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix draw_button() off-by-one errors for exclusive box coordinates

    box.x2/y2 are exclusive (one past end), so:
    - Sunken border right/bottom highlight lines drew one pixel too far out
    - Recessed border width/height were one pixel too large, pushing the
    outer border off-screen for full-width buttons

    Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Mar 17 11:59:17 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/e9b4206eb16d93e29dd10df7
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Replace dead argc check with malloc NULL check in do_skypix()

    The argc < 1 guard was unreachable because the counting loop always
    increments argc at least once. Replace it with a NULL check on the
    malloc() result, which was the actual missing guard.
    (Coverity CID 501977)

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/master on Tue Mar 17 11:59:17 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7350fd498615bb280d1244dd
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Check fread() return when loading Amiga font in do_skypix()

    A short read would leave amiga_font partially uninitialized before
    the byte-swapping and offset validation that follows. Matches the
    existing fread check for the font list file earlier in the same
    function. (Coverity CID 501980)

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deuc¨@VERT to Git commit to main/sbbs/master on Sat Mar 21 19:53:02 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/6cce9286f030bf47bd57e6d5
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix three |# (RIP_NO_MORE) parsing bugs in parse_rip()

    Bug reported by NightFox, who should really open bug reports on
    SourceForge instead of making people chase things down secondhand.

    1. Stale '!' rendered when |# follows non-RIP text

    When non-RIP bytes precede '!' in the same buffer (e.g. the common
    case of \n\r or \r\n line endings before a RIP line), rip_start is
    non-zero. The |# handler called handle_rip_line() which took its
    first branch: deferring the RIP data to pending, truncating blen to
    rip_start, and returning false. But the handler unconditionally ran
    rip_start = pos + 1, which now exceeded blen. At the end of
    parse_rip(), rip_start <= maxlen was true but rip_start > blen, so
    buffer_rip was skipped but rip_start was returned as the output
    length Ä reading the stale '!' byte from the physically-uncleared
    buffer position. Commit 27e6a20f added the rip_start <= blen guard
    to prevent a crash but did not fix the data leak.

    Fix: check handle_rip_line()'s return value. When it returns false
    (deferred), don't modify rip_start. When it returns true (processed
    immediately), do the post-processing as before. Also pass
    RIP_STATE_BANG instead of RIP_STATE_CMD since both paths want BANG
    state after |#.

    2. |# must flush immediately, even when deferred

    The entire purpose of the |# special handling (added in 93e05beb)
    is to flush RIP commands without waiting for a line terminator.
    When handle_rip_line() defers (returns false), the RIP data sits
    in pending unprocessed until the next parse_rip() call Ä defeating
    the flush semantics. This matters for interactive commands like
    the NY2008 popup (|1000) that block waiting for user input: the
    popup wouldn't appear until after the next data arrived.

    Fix: when handle_rip_line() returns false, process pending
    immediately via do_rip_string() and reset newstate to FLUSHING
    so the next flush call knows there's nothing left to process.

    3. |# bytes leak as visible text from moredata

    When handle_rip_line()'s first branch defers RIP data, remaining
    bytes after |# are saved to moredata. On the next parse_rip()
    call, the flush path processes pending and switches to moredata.
    But handle_rip_line() unconditionally resets rip_start to the
    sentinel (maxlen+1), even though the restored state (BANG) means
    the moredata buffer is entirely RIP data. With rip_start as
    sentinel, the |# handler's handle_rip_line() call took the second
    path with remove=0, failing to remove the |# bytes from the
    buffer. They were then returned to the caller as visible text.

    Fix: after the flush path switches to moredata, re-check the
    restored state. If it's not BOL/MOL (i.e. still inside a RIP
    sequence), reset rip_start to 0.

    4. Allow '!' to start new RIP sequence after |#

    Per the spec, |# means "end of RIPscrip scene." Testing against
    RIPterm (reference implementation) confirms that '!' after |# on
    the same line starts a new RIP sequence. SyncTERM's BANG state
    only accepted '|', sending '!' to unrip_line -> MOL where it was
    rejected as a RIP start character.

    Fix: accept '!', '\x01', and '\x02' in RIP_STATE_BANG, updating
    rip_start and staying in BANG. This matches RIPterm's behavior
    where both |#|#|# (repeated NO_MORE) and |#!|... (new sequence)
    work on the same line.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¨@VERT to Git commit to main/sbbs/master on Sat Mar 21 21:02:24 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/c438d8a8d55fcc325c3911af
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Restrict post-|# bang acceptance to new RIP_STATE_NO_MORE state

    The '!' acceptance added in 6cce9286f0 was in RIP_STATE_BANG, which
    is also entered from BOL when the initial '!' is seen. This caused
    "!!|c04|..." to treat the second '!' as a new RIP sequence start
    instead of falling out of RIP parsing Ä the entire line should
    display as literal text since '!!' is not a valid RIP start.

    Add RIP_STATE_NO_MORE, entered only by |# (RIP_NO_MORE). Only this
    state accepts '!'/CTRL-A/CTRL-B for starting a new RIP sequence.
    RIP_STATE_BANG reverts to only accepting '|'.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net