• src/sbbs3/sbbs_ini.c

    From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Sun Mar 12 00:00:02 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/5b7c88d7a406aef0c80eeab9
    Modified Files:
    src/sbbs3/sbbs_ini.c
    Log Message:
    Remove extraneous ulong typedef

    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Rob Swindell (in GitKraken)@VERT to Git commit to main/sbbs/master on Sun Mar 12 17:42:56 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/2b087aaabfa8dcc80bcafa92
    Modified Files:
    src/sbbs3/sbbs_ini.c
    Log Message:
    Add back a (different) typecast to eliminate MSVC warning

    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Mon Apr 3 23:16:10 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/f95f67ac43c455993a84f03d
    Modified Files:
    src/sbbs3/sbbs_ini.c
    Log Message:
    Fix double-free race condition with SBBSCTRL upon global recycle

    When multiple servers are recycling at the same time, (e.g. due to saved
    change in SCFG) they'd each call sbbs_read_ini() with a shared global_startup struct, which in turn calls sbbs_free_ini(), which would free all the
    allocated network interface lists (including the global_startup one) using iniFreeStringList (just a wrapper for strListFree), but iniFreeStringList() does NOT modify (NULLify) the freed-pointer, so your second or third server that called sbbs_read_ini(), with the shared MainForm->global structure, would *again* free the same global interface list. This bug actually has always existed because get_ini_globals() freed the global interface list in the same way, except it *immediately* re-allocated a new one by calling iniGetStringList(), so the time window (opportunity) for this race condition
    to occur was much smaller. Truly, SBBSCTRL should use a mutex or other mechanism to protect the shared global_startup struct, but this is a first
    step to a full fix: sbbs_free_ini() should (and now does) nullify the freed network interface pointers by using strListFree() directly. I haven't been
    able to reproduce the crash upon recycle in SBBSCTRL after making this change.

    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Randy Sommerfeld@VERT to Git commit to main/sbbs/master on Tue Apr 4 02:04:36 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/fcf4a00126190ded4fc11a1c
    Modified Files:
    src/sbbs3/sbbs_ini.c
    Log Message:
    Merge branch 'master' of gitlab.synchro.net:main/sbbs

    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Rob Swindell (on Windows)@VERT to Git commit to main/sbbs/master on Mon May 1 12:00:24 2023
    https://gitlab.synchro.net/main/sbbs/-/commit/b8d4452d1e5cb7a0b586e07f
    Modified Files:
    src/sbbs3/sbbs_ini.c
    Log Message:
    Fix valgrind-reported memleak in sbbs_read_ini()

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