Subj : New Defects reported by Coverity Scan for Synchronet To : All From : scan-admin@coverity.com Date : Mon Sep 07 2026 14:25:22 ----==_mimepart_6a9ec9519c7f0_2264d92b3f152419ac2938d Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi, Please find the latest report on new defect(s) introduced to Synchronet found with Coverity Scan. 2 new defect(s) introduced to Synchronet found with Coverity Scan. New defect(s) Reported-by: Coverity Scan Showing 2 of 2 defect(s) ** CID 655740: Concurrent data access violations (MISSING_LOCK) /tmp/sbbs-Sep-07-2026/src/conio/sdl_con.c: 501 in sdl_init() _____________________________________________________________________________________________ *** CID 655740: Concurrent data access violations (MISSING_LOCK) /tmp/sbbs-Sep-07-2026/src/conio/sdl_con.c: 501 in sdl_init() 495 _beginthread(sdl_video_event_thread, 0, NULL); 496 #endif 497 sdl_user_func_ret(SDL_USEREVENT_INIT); 498 sdl_init_mode(ciolib_initial_mode); 499 500 if(sdl_init_good) { >>> CID 655740: Concurrent data access violations (MISSING_LOCK) >>> Accessing "fullscreen" without holding lock "win_mutex". Elsewhere, "fullscreen" is written to with "win_mutex" held 3 out of 3 times (3 of these accesses strongly imply that it is necessary). 501 cio_api.mode=fullscreen?CIOLIB_MODE_SDL_FULLSCREEN:CIOLIB_MODE_SDL; 502 #ifdef _WIN32 503 FreeConsole(); 504 #endif 505 cio_api.options |= CONIO_OPT_PALETTE_SETTING | CONIO_OPT_SET_TITLE | CONIO_OPT_SET_NAME | CONIO_OPT_SET_ICON | CONIO_OPT_EXTERNAL_SCALING | CONIO_OPT_KEY_EVENTS; 506 return(0); ** CID 655739: (ATOMICITY) /main.cpp: 2782 in output_thread(void *)() /main.cpp: 2764 in output_thread(void *)() _____________________________________________________________________________________________ *** CID 655739: (ATOMICITY) /main.cpp: 2782 in output_thread(void *)() 2776 /* Handle the SSH error here. The lprintf inside GCESSTR 2777 * runs while ssh_mutex is held; releasing+reacquiring it 2778 * across the error report would make the error-handling 2779 * sequence racy (ssh_errors++, online=FALSE) and is the 2780 * wrong tradeoff for a fast log write. */ 2781 // coverity[SLEEP:SUPPRESS] >>> CID 655739: (ATOMICITY) >>> Using an unreliable value of "GCES_level" inside the second locked section. If the data that "GCES_level" depends on was changed by another thread, this use might be incorrect. 2782 GCESSTR(err, node, sbbs->ssh_session, "pushing data"); 2783 sbbs->online = false; 2784 sendbytes = buftop - bufbot; 2785 i = sendbytes; // Pretend we sent it all 2786 } 2787 else { /main.cpp: 2764 in output_thread(void *)() 2758 } 2759 if (sbbs->session_channel == -1) { 2760 i = sendbytes; // Pretend we sent it all 2761 } 2762 else { 2763 if (cryptStatusError((err = cryptSetAttribute(sbbs->ssh_session, CRYPT_SESSINFO_SSH_CHANNEL, sbbs->session_channel)))) { >>> CID 655739: (ATOMICITY) >>> Using an unreliable value of "GCES_level" inside the second locked section. If the data that "GCES_level" depends on was changed by another thread, this use might be incorrect. 2764 GCESSTR(err, node, sbbs->ssh_session, "setting channel"); 2765 sbbs->online = false; 2766 i = sendbytes; // Pretend we sent it all 2767 } 2768 else { 2769 /* ________________________________________________________________________________________________________ To view the defects in Coverity Scan visit, https://scan.coverity.com/projects/synchronet?tab=overview ----==_mimepart_6a9ec9519c7f0_2264d92b3f152419ac2938d Content-Type: text/html; charset=us-ascii Content-Transfer-Encoding: 7bit
Hi,
Please find the latest report on new defect(s) introduced to Synchronet found with Coverity Scan.
** CID 655740: Concurrent data access violations (MISSING_LOCK)
/tmp/sbbs-Sep-07-2026/src/conio/sdl_con.c: 501 in sdl_init()
_____________________________________________________________________________________________
*** CID 655740: Concurrent data access violations (MISSING_LOCK)
/tmp/sbbs-Sep-07-2026/src/conio/sdl_con.c: 501 in sdl_init()
495 _beginthread(sdl_video_event_thread, 0, NULL);
496 #endif
497 sdl_user_func_ret(SDL_USEREVENT_INIT);
498 sdl_init_mode(ciolib_initial_mode);
499
500 if(sdl_init_good) {
>>> CID 655740: Concurrent data access violations (MISSING_LOCK)
>>> Accessing "fullscreen" without holding lock "win_mutex". Elsewhere, "fullscreen" is written to with "win_mutex" held 3 out of 3 times (3 of these accesses strongly imply that it is necessary).
501 cio_api.mode=fullscreen?CIOLIB_MODE_SDL_FULLSCREEN:CIOLIB_MODE_SDL;
502 #ifdef _WIN32
503 FreeConsole();
504 #endif
505 cio_api.options |= CONIO_OPT_PALETTE_SETTING | CONIO_OPT_SET_TITLE | CONIO_OPT_SET_NAME | CONIO_OPT_SET_ICON | CONIO_OPT_EXTERNAL_SCALING | CONIO_OPT_KEY_EVENTS;
506 return(0);
** CID 655739: (ATOMICITY)
/main.cpp: 2782 in output_thread(void *)()
/main.cpp: 2764 in output_thread(void *)()
_____________________________________________________________________________________________
*** CID 655739: (ATOMICITY)
/main.cpp: 2782 in output_thread(void *)()
2776 /* Handle the SSH error here. The lprintf inside GCESSTR
2777 * runs while ssh_mutex is held; releasing+reacquiring it
2778 * across the error report would make the error-handling
2779 * sequence racy (ssh_errors++, online=FALSE) and is the
2780 * wrong tradeoff for a fast log write. */
2781 // coverity[SLEEP:SUPPRESS]
>>> CID 655739: (ATOMICITY)
>>> Using an unreliable value of "GCES_level" inside the second locked section. If the data that "GCES_level" depends on was changed by another thread, this use might be incorrect.
2782 GCESSTR(err, node, sbbs->ssh_session, "pushing data");
2783 sbbs->online = false;
2784 sendbytes = buftop - bufbot;
2785 i = sendbytes; // Pretend we sent it all
2786 }
2787 else {
/main.cpp: 2764 in output_thread(void *)()
2758 }
2759 if (sbbs->session_channel == -1) {
2760 i = sendbytes; // Pretend we sent it all
2761 }
2762 else {
2763 if (cryptStatusError((err = cryptSetAttribute(sbbs->ssh_session, CRYPT_SESSINFO_SSH_CHANNEL, sbbs->session_channel)))) {
>>> CID 655739: (ATOMICITY)
>>> Using an unreliable value of "GCES_level" inside the second locked section. If the data that "GCES_level" depends on was changed by another thread, this use might be incorrect.
2764 GCESSTR(err, node, sbbs->ssh_session, "setting channel");
2765 sbbs->online = false;
2766 i = sendbytes; // Pretend we sent it all
2767 }
2768 else {
2769 /*
Best regards,
The Coverity Scan Admin Team