Skip to content
Snippets Groups Projects
Select Git revision
  • dailybuild_linux-x64
  • dailybuild_win32
  • master default protected
  • sqlite
  • rip_abstraction
  • dailybuild_macos-armv8
  • dd_file_lister_filanem_in_desc_color
  • mode7
  • dd_msg_reader_are_you_there_warning_improvement
  • c23-playing
  • syncterm-1.3
  • syncterm-1.2
  • test-build
  • hide_remote_connection_with_telgate
  • 638-can-t-control-c-during-a-file-search
  • add_body_to_pager_email
  • mingw32-build
  • cryptlib-3.4.7
  • ree/mastermind
  • new_user_dat
  • sbbs320d
  • syncterm-1.6
  • syncterm-1.5
  • syncterm-1.4
  • sbbs320b
  • syncterm-1.3
  • syncterm-1.2
  • syncterm-1.2rc6
  • syncterm-1.2rc5
  • push
  • syncterm-1.2rc4
  • syncterm-1.2rc2
  • syncterm-1.2rc1
  • sbbs319b
  • sbbs318b
  • goodbuild_linux-x64_Sep-01-2020
  • goodbuild_win32_Sep-01-2020
  • goodbuild_linux-x64_Aug-31-2020
  • goodbuild_win32_Aug-31-2020
  • goodbuild_win32_Aug-30-2020
40 results

sbbs

  • Clone with SSH
  • Clone with HTTPS
  • Rob Swindell (on Windows)'s avatar
    Rob Swindell authored
    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.
    f95f67ac
    History
    Name Last commit Last update