1. 03 Jul, 2022 3 commits
    • Rob Swindell's avatar
      Paranoia around use of smb.subnum as an index into scfg.sub[] · bd725db6
      Rob Swindell authored
      Use the is_valid_subnum() function before using the smb.subnum as an index into (s)cfg.sub[]. Related to the previous committed fix of writemsg(): leaving the global smb.subnum as -1 (INVALID_SUB) after replying to a post via email or netmail, resulting in a crash here.
      bd725db6
    • Rob Swindell's avatar
      Fix smb.subnum corruption in writemsg() · 2db618ae
      Rob Swindell authored
      Fix issue introduced 9 years ago that could cause a crash after replying to a post via email or netmail and then displaying the header of a poll message or a normal message with votes:
      
      Program terminated with signal SIGSEGV, Segmentation fault.
      #0  0x00007f9f9569a317 in sbbs_t::show_msg (this=0x7f9f70c56880,
          smb=0x7f9f70c5e4e0, msg=0x7f9ebadf08b0, p_mode=4, post=0x7f9f18071a24)
          at getmsg.cpp:255
      255                                             ,cfg.sub[smb->subnum]->misc&SUB_                                                                              NAME ? useron.name : useron.alias, NET_NONE, NULL);
      [Current thread is 1 (Thread 0x7f9ebadf3700 (LWP 23279))]
      (gdb) print smb->subnum
      $1 = 4294967295
      (gdb) bt
      #0  0x00007f9f9569a317 in sbbs_t::show_msg (this=0x7f9f70c56880,
          smb=0x7f9f70c5e4e0, msg=0x7f9ebadf08b0, p_mode=4, post=0x7f9f18071a24)
          at getmsg.cpp:255
      #1  0x00007f9f957b2aee in sbbs_t::scanposts (this=0x7f9f70c56880, subnum=9,
          mode=2, find=0x7f9ebadf1270 "") at readmsgs.cpp:670
      #2  0x00007f9f957bb75a in sbbs_t::scanallsubs (this=0x7f9f70c56880, mode=2)
          at scansubs.cpp:219
      #3  0x00007f9f9568c948 in sbbs_t::exec_msg (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at execmsg.cpp:315
      #4  0x00007f9f95683129 in sbbs_t::exec_function (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at execfunc.cpp:422
      #5  0x00007f9f95679450 in sbbs_t::exec (this=0x7f9f70c56880,
          csi=0x7f9f70c64768) at exec.cpp:1199
      #6  0x00007f9f9577d742 in node_thread (arg=0x7f9f70c56880) at main.cpp:4364
      
      writemsg() was changing the global smb.subnum and when writing an email or netmail, that subnum value is -1 (since it's not a sub-board) and then later show_msg() is using the smb.subnum as a index into scfg.sub[] when determining if the current user already voted on the message being displayed and then: bang, crash, fall down, go boom.
      
      Simply saving and restoring the smb.subnum when executing an external editor is all that was needed here. And this is the first use of the C++ "auto" keyword in Synchronet!
      2db618ae
    • Rob Swindell's avatar
      Use mouse button release rather than press to activate a hotspot · 1a3e8507
      Rob Swindell authored
      As described in issue #412, when using extended mouse coordinate (SGR) mode, the mouse button release sequence would be received by the BBS after the hotspot-activated menu option was executed and then that button release sequence possibly passed through to the a child script or program that didn't know how to handle or ignore it.
      
      To resolve this, the BBS now ignores ("eats") the mouse button *press* sequence and only acts upon the mouse button *release* sequence. This is more aligned with how button-clicks work in mouse-control/GUI applications anyway.
      1a3e8507
  2. 02 Jul, 2022 1 commit
  3. 28 Jun, 2022 2 commits
  4. 26 Jun, 2022 6 commits
  5. 25 Jun, 2022 7 commits
  6. 24 Jun, 2022 3 commits
  7. 21 Jun, 2022 4 commits
  8. 20 Jun, 2022 1 commit
  9. 17 Jun, 2022 6 commits
  10. 15 Jun, 2022 4 commits
  11. 14 Jun, 2022 2 commits
  12. 13 Jun, 2022 1 commit