home bbs files messages ]

Just a sample of the Echomail archive

<< oldest | < older | list | newer > | newest >> ]

 Message 48317 
 scan-admin@coverity.com to All 
 New Defects reported by Coverity Scan fo 
 14 Dec 25 13:48:36 
 
TZUTC: 0000
MSGID: 53741.syncprog@1:103/705 2da4c824
PID: Synchronet 3.21a-Linux master/637e4a3d2 Dec 13 2025 GCC 12.2.0
TID: SBBSecho 3.33-Linux master/637e4a3d2 Dec 13 2025 GCC 12.2.0
BBSID: VERT
CHRS: ASCII 1
FORMAT: flowed

----==_mimepart_693ec0347df67_815e22c07a52839ac105f0
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.

89 new defect(s) introduced to Synchronet found with Coverity Scan.
88 defect(s), reported by Coverity Scan earlier, were marked fixed in the
recent build analyzed by Coverity Scan.

New defect(s) Reported-by: Coverity Scan
Showing 20 of 89 defect(s)


** CID 639949:       Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 2047           in check_ars(http_session_t *)()


________________________________________________________________
____________________________
*** CID 639949:         Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 2047             in check_ars(http_session_t *)()
2041     		else
2042     			lprintf(LOG_NOTICE, "%04d !UNKNOWN USER: '%s'"
2043     			        , session->socket, session->req.auth.username);
2044     		return false;
2045     	}
2046     	thisuser.number = i;
>>>     CID 639949:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "getuserdat" without checking return value (as is done
elsewhere 90 out of 103 times).
2047     	getuserdat(&scfg, &thisuser);
2048     	switch (session->req.auth.type) {
2049     		case AUTHENTICATION_TLS_PSK:
2050     			if ((auth_allowed & (1 << AUTHENTICATION_TLS_PSK)) == 0)
2051     				return false;
2052     			if (session->last_user_num != 0) {

** CID 639948:       Program hangs  (SLEEP)
/services.cpp: 1619           in native_service_thread(void *)()


________________________________________________________________
____________________________
*** CID 639948:         Program hangs  (SLEEP)
/services.cpp: 1619             in native_service_thread(void *)()
1613     	client_on(socket, &client, false /* update */);
1614
1615     	if (startup->login_attempt.throttle
1616     	    && (login_attempts = loginAttempts(startup->login_attempt_list,
&service_client.addr)) > 1) {
1617     		lprintf(LOG_DEBUG, "%04d %s Throttling suspicious connection from:
%s (%lu login attempts)"
1618     		        , socket, service->protocol, client.addr, login_attempts);
>>>     CID 639948:         Program hangs  (SLEEP)
>>>     Call to "nanosleep" might sleep while holding lock "star
up->login_attempt_list->mutex".
1619     		mswait(login_attempts * startup->login_attempt.throttle);
1620     	}
1621
1622     	/* RUN SCRIPT */
1623     	if (strpbrk(service->cmd, "/\\") == NULL)
1624     		SAFEPRINTF2(cmd, "%s%s", scfg.exec_dir, service->cmd);

** CID 639947:       Control flow issues  (DEADCODE)
/websrvr.cpp: 6533           in read_post_data(http_session_t *)()


________________________________________________________________
____________________________
*** CID 639947:         Control flow issues  (DEADCODE)
/websrvr.cpp: 6533             in read_post_data(http_session_t *)()
6527     				if (ch_len == 0)
6528     					break;
6529     				/* Check size */
6530     				s += ch_len;
6531     				if (s > MAX_POST_LEN) {
6532     					if (s > SIZE_MAX) {
>>>     CID 639947:         Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "send_error(session, 6533U,
...".
6533     						send_error(session, __LINE__, "413 Request entity too large");
6534     						FCLOSE_OPEN_FILE(fp);
6535     						return false;
6536     					}
6537     					if (fp == NULL) {
6538     						fp = open_post_file(session);

** CID 639946:         (CHECKED_RETURN)
/js_socket.cpp: 1412           in js_recv(JSContext *, unsigned int, unsigned
long *)()
/js_socket.cpp: 1415           in js_recv(JSContext *, unsigned int, unsigned
long *)()


________________________________________________________________
____________________________
*** CID 639946:           (CHECKED_RETURN)
/js_socket.cpp: 1412             in js_recv(JSContext *, unsigned int,
unsigned long *)()
1406
1407     	if ((p = (js_socket_private_t*)js_GetClassPrivate(cx, obj,
&js_socket_class)) == NULL) {
1408     		return JS_FALSE;
1409     	}
1410
1411     	if (argc && argv[0] != JSVAL_VOID) {
>>>     CID 639946:           (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
1412     		JS_ValueToInt32(cx, argv[0], &len);
1413
1414     		if (argc > 1 && argv[1] != JSVAL_VOID) {
1415     			JS_ValueToInt32(cx, argv[1], &timeout);
1416     		}
1417     	}
/js_socket.cpp: 1415             in js_recv(JSContext *, unsigned int,
unsigned long *)()
1409     	}
1410
1411     	if (argc && argv[0] != JSVAL_VOID) {
1412     		JS_ValueToInt32(cx, argv[0], &len);
1413
1414     		if (argc > 1 && argv[1] != JSVAL_VOID) {
>>>     CID 639946:           (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
1415     			JS_ValueToInt32(cx, argv[1], &timeout);
1416     		}
1417     	}
1418
1419     	if ((buf = (char*)malloc(len + 1)) == NULL) {
1420     		JS_ReportError(cx, "Error allocating %u bytes", len + 1);

** CID 639945:         (CHECKED_RETURN)
/js_system.cpp: 1002           in js_matchuserdata(JSContext *, unsigned int,
unsigned long *)()
/js_system.cpp: 987           in js_matchuserdata(JSContext *, unsigned int,
unsigned long *)()


________________________________________________________________
____________________________
*** CID 639945:           (CHECKED_RETURN)
/js_system.cpp: 1002             in js_matchuserdata(JSContext *, unsigned
int, unsigned long *)()
996     	if ((js_str = JS_ValueToString(cx, argv[1])) == NULL)
997     		return JS_FALSE;
998
999     	if (argnum < argc && JSVAL_IS_BOOLEAN(argv[argnum]))
1000     		JS_ValueToBoolean(cx, argv[argnum++], &match_del);
1001     	if (argnum < argc && JSVAL_IS_NUMBER(argv[argnum]))
>>>     CID 639945:           (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
1002     		JS_ValueToInt32(cx, argv[argnum++], &usernumber);
1003     	if (argnum < argc && JSVAL_IS_BOOLEAN(argv[argnum]))
1004     		JS_ValueToBoolean(cx, argv[argnum++], &match_next);
1005
1006     	JSSTRING_TO_ASTRING(cx, js_str, p, 128, NULL);
1007     	if (p == NULL)
/js_system.cpp: 987             in js_matchuserdata(JSContext *, unsigned int,
unsigned long *)()
981     		return JS_TRUE;
982     	}
983     	js_system_private_t* sys;
984     	if ((sys = (js_system_private_t*)js_GetClassPrivate(cx, obj,
&js_system_class)) == NULL)
985     		return JS_FALSE;
986
>>>     CID 639945:           (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
987     	JS_ValueToInt32(cx, argv[0], &field);
988     	rc = JS_SUSPENDREQUEST(cx);
989     	len = user_field_len(static_cast(field));
990     	JS_RESUMEREQUEST(cx, rc);
991     	if (len < 1) {
992     		JS_ReportError(cx, "Invalid user field: %d", field);

** CID 639944:       Uninitialized variables  (UNINIT)


________________________________________________________________
____________________________
*** CID 639944:         Uninitialized variables  (UNINIT)
/js_system.cpp: 2108             in js_chkpassword(JSContext *, unsigned int,
unsigned long *)()
2102
2103     	js_system_private_t* sys;
2104     	if ((sys = (js_system_private_t*)js_GetClassPrivate(cx, obj,
&js_system_class)) == NULL)
2105     		return JS_FALSE;
2106
2107     	rc = JS_SUSPENDREQUEST(cx);
>>>     CID 639944:         Uninitialized variables  (UNINIT)
>>>     Using uninitialized value "*str" when calling "check_pass".
2108     	bool result = check_pass(sys->cfg, str, /* user: */NULL, /* unique:
*/false, /* reason: */NULL);
2109     	JS_SET_RVAL(cx, arglist, BOOLEAN_TO_JSVAL(result));
2110     	JS_RESUMEREQUEST(cx, rc);
2111
2112     	return JS_TRUE;
2113     }

** CID 639943:         (Y2K38_SAFETY)
/js_filebase.cpp: 1591           in js_filebase_get(JSContext *, JSObject *,
long, unsigned long *)()
/js_filebase.cpp: 1581           in js_filebase_get(JSContext *, JSObject *,
long, unsigned long *)()


________________________________________________________________
____________________________
*** CID 639943:           (Y2K38_SAFETY)
/js_filebase.cpp: 1591             in js_filebase_get(JSContext *, JSObject *,
long, unsigned long *)()
1585     			rc = JS_SUSPENDREQUEST(cx);
1586     			smb_getstatus(&(p->smb));
1587     			JS_RESUMEREQUEST(cx, rc);
1588     			*vp = UINT_TO_JSVAL(p->smb.status.total_files);
1589     			break;
1590     		case FB_PROP_UPDATE_TIME:
>>>     CID 639943:           (Y2K38_SAFETY)
>>>     A "time_t" value is stored in an integer with too few bits to
accommodate it.  The expression "newfiletime(&p->smb)" is cast to "uint32_t".
1591     			*vp = UINT_TO_JSVAL((uint32_t)newfiletime(&p->smb));
1592     			break;
1593     		case FB_PROP_MAX_FILES:
1594     			*vp = UINT_TO_JSVAL(p->smb.status.max_files);
1595     			break;
1596     		case FB_PROP_MAX_AGE:
/js_filebase.cpp: 1581             in js_filebase_get(JSContext *, JSObject *,
long, unsigned long *)()
1575     			smb_getstatus(&(p->smb));
1576     			JS_RESUMEREQUEST(cx, rc);
1577     			*vp = UINT_TO_JSVAL(p->smb.status.last_file);
1578     			break;
1579     		case FB_PROP_LAST_FILE_TIME:
1580     			rc = JS_SUSPENDREQUEST(cx);
>>>     CID 639943:           (Y2K38_SAFETY)
>>>     A "time_t" value is stored in an integer with too few bits to
accommodate it.  The expression "lastfiletime(&p->smb)" is cast to "uint32_t".
1581     			*vp = UINT_TO_JSVAL((uint32_t)lastfiletime(&p->smb));
1582     			JS_RESUMEREQUEST(cx, rc);
1583     			break;
1584     		case FB_PROP_FILES:
1585     			rc = JS_SUSPENDREQUEST(cx);
1586     			smb_getstatus(&(p->smb));

** CID 639942:       Error handling issues  (CHECKED_RETURN)
/js_socket.cpp: 3624           in js_socket_constructor(JSContext *, unsigned
int, unsigned long *)()


________________________________________________________________
____________________________
*** CID 639942:         Error handling issues  (CHECKED_RETURN)
/js_socket.cpp: 3624             in js_socket_constructor(JSContext *,
unsigned int, unsigned long *)()
3618     			return JS_TRUE;
3619     		}
3620     	}
3621
3622     	for (; i < argc; i++) {
3623     		if (JSVAL_IS_NUMBER(argv[i])) {
>>>     CID 639942:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
3624     			JS_ValueToInt32(cx, argv[i], &type);
3625     		}
3626     		else if (JSVAL_IS_BOOLEAN(argv[i])) {
3627     			if (argv[i] == JSVAL_TRUE)
3628     				domain = AF_INET6;
3629     		}

** CID 639941:       Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 6856           in http_session_thread(void *)()


________________________________________________________________
____________________________
*** CID 639941:         Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 6856             in http_session_thread(void *)()
6850     			session.tls_sess = -1;
6851     			close_session_no_rb(&session);
6852     			thread_down();
6853     			return;
6854     		}
6855     		bool nodelay = true;
>>>     CID 639941:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "setsockopt(session.socket, IPPROTO_TCP, 1, (char *)&nodelay,
1U)" without checking return value. This library function may fail and return
an error code.
6856     		setsockopt(session.socket, IPPROTO_TCP, TCP_NODELAY, 
char*)&nodelay, sizeof(nodelay));
6857
6858     		if (looking_good)
6859     			looking_good = HANDLE_CRYPT_CALL(cryptSetAttribute(s
ssion.tls_sess, CRYPT_SESSINFO_TLS_OPTIONS, CRYPT_TLSOPTION_MINVER_TLS12),
&session, "setting TLS minver to 1.2");
6860     		if (looking_good)
6861     			looking_good = HANDLE_CRYPT_CALL(cryptSetAttribute(s
ssion.tls_sess, CRYPT_SESSINFO_NETWORKSOCKET, session.socket), &session,
"setting network socket");

** CID 639940:       High impact quality  (Y2K38_SAFETY)
/js_filebase.cpp: 701           in js_hash_file(JSContext *, unsigned int,
unsigned long *)()


________________________________________________________________
____________________________
*** CID 639940:         High impact quality  (Y2K38_SAFETY)
/js_filebase.cpp: 701             in js_hash_file(JSContext *, unsigned int,
unsigned long *)()
695     	if (size == -1)
696     		JS_ReportError(cx, "File does not exist: %s", path);
697     	else {
698     		smb_setfilesize(&file.idx, size);
699     		if ((p->smb_result = smb_hashfile(path, size, &file.fi
e_idx.hash.data)) > 0) {
700     			file.file_idx.hash.flags = p->smb_result;
>>>     CID 639940:         High impact quality  (Y2K38_SAFETY)
>>>     A "time_t" value is stored in an integer with too few bits to
accommodate it.  The expression "fdate(path)" is cast to "uint32_t".
701     			file.hdr.when_written.time = (uint32_t)fdate(path);
702     			JSObject* fobj;
703     			if ((fobj = JS_NewObject(cx, NULL, NULL, obj)) == NULL)
704     				JS_ReportError(cx, "object allocation failure, line %d", __LINE__);
705     			else {
706     				set_file_properties(cx, fobj, &file, detail);

** CID 639939:       Memory - corruptions  (REVERSE_NEGATIVE)
/websrvr.cpp: 7033           in http_session_thread(void *)()


________________________________________________________________
____________________________
*** CID 639939:         Memory - corruptions  (REVERSE_NEGATIVE)
/websrvr.cpp: 7033             in http_session_thread(void *)()
7027     			memset(session.req.ld, 0, sizeof(struct log_data));
7028     			/* FREE()d in http_logging_thread */
7029     			session.req.ld->hostname = strdup(session.host_name);
7030     		}
7031     		while ((redirp == NULL || session.req.send_location >= MOVED_TEMP)
7032     		       && !session.finished && !session.req.finished
>>>     CID 639939:         Memory - corruptions  (REVERSE_NEGATIVE)
>>>     You might be using variable "session.socket" before verifying that it
is >= 0.
7033     		       && session.socket != INVALID_SOCKET) {
7034     			SAFECOPY(session.req.status, "200 OK");
7035     			session.req.send_location = NO_LOCATION;
7036     			if (session.req.headers == NULL) {
7037     				/* FREE()d in close_request() */
7038     				if ((session.req.headers = strListInit()) == NULL) {

** CID 639938:         (CHECKED_RETURN)
/js_msgbase.cpp: 3037           in js_msgbase_get(JSContext *, JSObject *,
long, unsigned long *)()
/js_msgbase.cpp: 3031           in js_msgbase_get(JSContext *, JSObject *,
long, unsigned long *)()


________________________________________________________________
____________________________
*** CID 639938:           (CHECKED_RETURN)
/js_msgbase.cpp: 3037             in js_msgbase_get(JSContext *, JSObject *,
long, unsigned long *)()
3031     			smb_getstatus(&(p->smb));
3032     			JS_RESUMEREQUEST(cx, rc);
3033     			*vp = UINT_TO_JSVAL(p->smb.status.last_msg);
3034     			break;
3035     		case SMB_PROP_TOTAL_MSGS:
3036     			rc = JS_SUSPENDREQUEST(cx);
>>>     CID 639938:           (CHECKED_RETURN)
>>>     Calling "smb_getstatus" without checking return value (as is done
elsewhere 32 out of 36 times).
3037     			smb_getstatus(&(p->smb));
3038     			JS_RESUMEREQUEST(cx, rc);
3039     			*vp = UINT_TO_JSVAL(p->smb.status.total_msgs);
3040     			break;
3041     		case SMB_PROP_MAX_CRCS:
3042     			*vp = UINT_TO_JSVAL(p->smb.status.max_crcs);
/js_msgbase.cpp: 3031             in js_msgbase_get(JSContext *, JSObject *,
long, unsigned long *)()
3025     			} else {
3026     				*vp = UINT_TO_JSVAL(p->first_msg);
3027     			}
3028     			break;
3029     		case SMB_PROP_LAST_MSG:
3030     			rc = JS_SUSPENDREQUEST(cx);
>>>     CID 639938:           (CHECKED_RETURN)
>>>     Calling "smb_getstatus" without checking return value (as is done
elsewhere 32 out of 36 times).
3031     			smb_getstatus(&(p->smb));
3032     			JS_RESUMEREQUEST(cx, rc);
3033     			*vp = UINT_TO_JSVAL(p->smb.status.last_msg);
3034     			break;
3035     		case SMB_PROP_TOTAL_MSGS:
3036     			rc = JS_SUSPENDREQUEST(cx);

** CID 639937:       Incorrect expression  (PRECEDENCE_ERROR)
/js_socket.cpp: 1254           in js_sendto(JSContext *, unsigned int,
unsigned long *)()


________________________________________________________________
____________________________
*** CID 639937:         Incorrect expression  (PRECEDENCE_ERROR)
/js_socket.cpp: 1254             in js_sendto(JSContext *, unsigned int,
unsigned long *)()
1248
1249     	memset(&hints, 0, sizeof(hints));
1250     	hints.ai_socktype = p->type;
1251     	hints.ai_flags = AI_ADDRCONFIG;
1252     	dbprintf(false, p, "resolving hostname: %s", p->hostname);
1253
>>>     CID 639937:         Incorrect expression  (PRECEDENCE_ERROR)
>>>     Evaluates as: "result = (getaddrinfo(p->hostname, NULL, &hints, &res)
!= 0)", because "!=" has higher operator precedence than "=". The context
suggests that this might be in error.
1254     	if ((result = getaddrinfo(p->hostname, NULL, &hints, &res) != 0)) {
1255     		store_socket_error(p, result, gai_strerror(result));
1256     		dbprintf(TRUE, p, "getaddrinfo(%s) failed with error %d",
p->hostname, result);
1257     		JS_SET_RVAL(cx, arglist, JSVAL_FALSE);
1258     		free(cp);
1259     		JS_RESUMEREQUEST(cx, rc);

** CID 639936:       Error handling issues  (CHECKED_RETURN)
/js_socket.cpp: 2363           in js_socket_set(JSContext *, JSObject *, long,
int, unsigned long *)()


________________________________________________________________
____________________________
*** CID 639936:         Error handling issues  (CHECKED_RETURN)
/js_socket.cpp: 2363             in js_socket_set(JSContext *, JSObject *,
long, int, unsigned long *)()
2357
2358     					if (ssl_sync(scfg, lprintf)) {
2359     						if ((ret = cryptCreateSession(&p->session, CRYPT_UNUSED, tiny
== SOCK_PROP_SSL_SESSION ? CRYPT_SESSION_TLS: CRYPT_SESSION_TLS_SERVER)) ==
CRYPT_OK) {
2360     							ulong nb = 0;
2361     							ioctlsocket(p->sock, FIONBIO, &nb);
2362     							nb = 1;
>>>     CID 639936:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "setsockopt(p->sock, IPPROTO_TCP, 1, (char *)&nb, 8U)" without
checking return value. This library function may fail and return an error code.
2363     							setsockopt(p->sock, IPPROTO_TCP, TCP_NODELAY, (char*)&nb,
sizeof(nb));
2364     							if ((ret = do_cryptAttribute(p->session, CRYPT_S
SSINFO_NETWORKSOCKET, p->sock)) == CRYPT_OK) {
2365     								int minver = CRYPT_TLSOPTION_MINVER_TLS12;
2366     								if (p->tls_minver == 100)
2367     									minver = CRYPT_TLSOPTION_MINVER_TLS10;
2368     								else if (p->tls_minver == 101)

** CID 639935:         (INTEGER_OVERFLOW)
/websrvr.cpp: 725           in sess_sendbuf(http_session_t *, const char *,
unsigned long, volatile bool *)()
/websrvr.cpp: 712           in sess_sendbuf(http_session_t *, const char *,
unsigned long, volatile bool *)()


________________________________________________________________
____________________________
*** CID 639935:           (INTEGER_OVERFLOW)
/websrvr.cpp: 725             in sess_sendbuf(http_session_t *, const char *,
unsigned long, volatile bool *)()
719     					else if (SOCKET_ERRNO == EPIPE)
720     						lprintf(LOG_NOTICE, "%04d %-5s [%s] Unable to send to peer",
session->socket, session->client.protocol, session->host_ip);
721     #endif
722     					else if (session->socket != INVALID_SOCKET)
723     						lprintf(LOG_WARNING, "%04d %-5s [%s] !ERROR %d sending on
socket", session->socket, session->client.protocol, session->host_ip,
SOCKET_ERRNO);
724     					*failed = true;
>>>     CID 639935:           (INTEGER_OVERFLOW)
>>>     "sent", which might have underflowed, is returned from the function.
725     					return sent;
726     				}
727     			}
728     		}
729     		else {
730     			lprintf(LOG_WARNING, "%04d %-5s [%s] Timeout waiting for socket to
become writable", session->socket, session->client.protocol, session->host_ip);
/websrvr.cpp: 712             in sess_sendbuf(http_session_t *, const char *,
unsigned long, volatile bool *)()
706     				}
707     				else
708     					*failed = true;
709     				result = tls_sent;
710     			}
711     			else {
>>>     CID 639935:           (INTEGER_OVERFLOW)
>>>     "len - sent", which might have underflowed, is passed to
"send(session->socket, buf + sent, len - sent, 0)".
712     				result = sendsocket(session->socket, buf + sent, len - sent);
713     				if (result == SOCKET_ERROR) {
714     					if (SOCKET_ERRNO == ECONNRESET)
715     						lprintf(LOG_NOTICE, "%04d %-5s [%s] Connection reset by peer on
send", session->socket, session->client.protocol, session->host_ip);
716     					else if (SOCKET_ERRNO == ECONNABORTED)
717     						lprintf(LOG_NOTICE, "%04d %-5s [%s] Connection aborted by peer
on send", session->socket, session->client.protocol, session->host_ip);

** CID 639934:       Uninitialized variables  (UNINIT)
/js_user.cpp: 1279           in js_downloaded_file(JSContext *, unsigned int,
unsigned long *)()


________________________________________________________________
____________________________
*** CID 639934:         Uninitialized variables  (UNINIT)
/js_user.cpp: 1279             in js_downloaded_file(JSContext *, unsigned
int, unsigned long *)()
1273
1274     	uintN argn = 0;
1275     	if (argc > argn && JSVAL_IS_STRING(argv[argn])) {
1276     		char *p;
1277     		JSSTRING_TO_ASTRING(cx, JSVAL_TO_STRING(argv[argn]), p, LEN_EXTCODE
+ 2, NULL);
1278     		for (dirnum = 0; dirnum < scfg->total_dirs; dirnum++)
>>>     CID 639934:         Uninitialized variables  (UNINIT)
>>>     Using uninitialized value "*p" when calling "strcasecmp".
1279     			if (!stricmp(scfg->dir[dirnum]->code, p))
1280     				break;
1281     		argn++;
1282     	}
1283     	if (argc > argn && JSVAL_IS_STRING(argv[argn])) {
1284     		JSSTRING_TO_ASTRING(cx, JSVAL_TO_STRING(argv[argn]), fname,
MAX_PATH + 1, NULL);

** CID 639933:       Error handling issues  (CHECKED_RETURN)
/js_system.cpp: 1481           in js_filter_ip(JSContext *, unsigned int,
unsigned long *)()


________________________________________________________________
____________________________
*** CID 639933:         Error handling issues  (CHECKED_RETURN)
/js_system.cpp: 1481             in js_filter_ip(JSContext *, unsigned int,
unsigned long *)()
1475     	js_system_private_t* sys;
1476     	if ((sys = (js_system_private_t*)js_GetClassPrivate(cx, obj,
&js_system_class)) == NULL)
1477     		return JS_FALSE;
1478
1479     	for (i = 0; i < argc && fname == NULL; i++) {
1480     		if (JSVAL_IS_NUMBER(argv[i])) {
>>>     CID 639933:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
1481     			JS_ValueToInt32(cx, argv[i], &duration);
1482     			continue;
1483     		}
1484     		if (!JSVAL_IS_STRING(argv[i]))
1485     			continue;
1486     		JSVALUE_TO_MSTRING(cx, argv[i], p, NULL);

** CID 639932:       Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 1188           in close_request(http_session_t *)()


________________________________________________________________
____________________________
*** CID 639932:         Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 1188             in close_request(http_session_t *)()
1182     	FCLOSE_OPEN_FILE(session->req.fp);
1183
1184     	for (i = 0; i < MAX_CLEANUPS; i++) {
1185     		if (session->req.cleanup_file[i] != NULL) {
1186     			if (i != CLEANUP_SSJS_TMP_FILE
1187     			    || !(startup->options & WEB_OPT_DEBUG_SSJS))
>>>     CID 639932:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "remove(session->req.cleanup_file[i])" without checking return
value. This library function may fail and return an error code.
1188     				remove(session->req.cleanup_file[i]);
1189     			free(session->req.cleanup_file[i]);
1190     		}
1191     	}
1192
1193     	smb_freefilemem(&session->file);

** CID 639931:       Memory - illegal accesses  (OVERRUN)
/mailsrvr.cpp: 901           in sockmimetext(int, const char *, int, smbmsg_t
*, char *, unsigned long, char **, char *)()


________________________________________________________________
____________________________
*** CID 639931:         Memory - illegal accesses  (OVERRUN)
/mailsrvr.cpp: 901             in sockmimetext(int, const char *, int,
smbmsg_t *, char *, unsigned long, char **, char *)()
895     		np = "\r\n"; // Send at least one line of message text (issue #822)
896     	else
897     		np = msgtxt;
898     	long bytes = 0;
899     	while (*np && lines < maxlines) {
900     		len = 0;
>>>     CID 639931:         Memory - illegal accesses  (OVERRUN)
>>>     Overrunning array of 3 bytes at byte offset 997 by dereferencing
pointer "np + len".
901     		while (len < RFC822_MAX_LINE_LEN && *(np + len) != 0 && *(np + len)
!= '\n')
902     			len++;
903
904     		tlen = len;
905     		while (tlen && *(np + (tlen - 1)) <= ' ') /* Takes care of '\r' or
spaces */
906     			tlen--;

** CID 639930:       Error handling issues  (CHECKED_RETURN)
/js_system.cpp: 1640           in js_put_node_message(JSContext *, unsigned
int, unsigned long *)()


________________________________________________________________
____________________________
*** CID 639930:         Error handling issues  (CHECKED_RETURN)
/js_system.cpp: 1640             in js_put_node_message(JSContext *, unsigned
int, unsigned long *)()
1634     		return JS_FALSE;
1635
1636     	js_system_private_t* sys;
1637     	if ((sys = (js_system_private_t*)js_GetClassPrivate(cx, obj,
&js_system_class)) == NULL)
1638     		return JS_FALSE;
1639
>>>     CID 639930:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return value (as is done
elsewhere 236 out of 268 times).
1640     	JS_ValueToInt32(cx, argv[0], &node);
1641     	if (node < 1)
1642     		node = 1;
1643
1644     	if ((js_msg = JS_ValueToString(cx, argv[1])) == NULL)
1645     		return JS_FALSE;


________________________________________________________________
_______________________________________
To view the defects in Coverity Scan visit, https://scan.coverit
.com/projects/synchronet?tab=overview


----==_mimepart_693ec0347df67_815e22c07a52839ac105f0
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit




  
  New Defects Reported - Synchronet
  


  

Hi,

Please find the latest report on new defect(s) introduced to Synchronet found with Coverity Scan.

  • New Defects Found: 89
  • 88 defect(s), reported by Coverity Scan earlier, were marked fixed in the recent build analyzed by Coverity Scan.
  • Defects Shown: Showing 20 of 89 defect(s)

Defect Details

** CID 639949:       Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 2047           in check_ars(http_session_t *)()


________________________________________________________________
____________________________
*** CID 639949:         Error handling issues  (CHECKED_RETURN)
/websrvr.cpp: 2047             in check_ars(http_session_t *)()
2041     		else
2042     			lprintf(LOG_NOTICE, "%04d !UNKNOWN USER: '%s'"
2043     			        , session->socket, session->req.auth.username);
2044     		return false;
2045     	}
2046     	thisuser.number = i;
>>>     CID 639949:         Error handling issues  (CHECKED_RETURN)
>>>     Calling "getuserdat" without checking return value
(as is done elsewhere 90 out of 103 times).
2047     	getuserdat(&scfg, &thisuser);
2048     	switch (session->req.auth.type) {
2049     		case AUTHENTICATION_TLS_PSK:
2050     			if ((auth_allowed & (1 << AUTHENTICATION_TLS_PSK)) == 0)
2051     				return false;
2052     			if (session->last_user_num != 0) {

** CID 639948:       Program hangs  (SLEEP)
/services.cpp: 1619           in native_service_thread(void *)()


________________________________________________________________
____________________________
*** CID 639948:         Program hangs  (SLEEP)
/services.cpp: 1619             in native_service_thread(void *)()
1613     	client_on(socket, &client, false /* update */);
1614
1615     	if (startup->login_attempt.throttle
1616     	    && (login_attempts = loginAttempts(startup
>login_attempt_list, &service_client.addr)) > 1) {
1617     		lprintf(LOG_DEBUG, "%04d %s Throttling suspicious connection
from: %s (%lu login attempts)"
1618     		        , socket, service->protocol, client.addr, 
ogin_attempts);
>>>     CID 639948:         Program hangs  (SLEEP)
>>>     Call to "nanosleep" might sleep while holding lock
"startup->login_attempt_list->mutex".
1619     		mswait(login_attempts * startup->login_attempt.throttle);
1620     	}
1621
1622     	/* RUN SCRIPT */
1623     	if (strpbrk(service->cmd, "/\\") == NULL)
1624     		SAFEPRINTF2(cmd, "%s%s", scfg.exec_dir, service->cmd);

** CID 639947:       Control flow issues  (DEADCODE)
/websrvr.cpp: 6533           in read_post_data(http_session_t *)()


________________________________________________________________
____________________________
*** CID 639947:         Control flow issues  (DEADCODE)
/websrvr.cpp: 6533             in read_post_data(http_session_t *)()
6527     				if (ch_len == 0)
6528     					break;
6529     				/* Check size */
6530     				s += ch_len;
6531     				if (s > MAX_POST_LEN) {
6532     					if (s > SIZE_MAX) {
>>>     CID 639947:         Control flow issues  (DEADCODE)
>>>     Execution cannot reach this statement: "se
d_error(session, 6533U, ...".
6533     						send_error(session, __LINE__, "413 Request entity too
large");
6534     						FCLOSE_OPEN_FILE(fp);
6535     						return false;
6536     					}
6537     					if (fp == NULL) {
6538     						fp = open_post_file(session);

** CID 639946:         (CHECKED_RETURN)
/js_socket.cpp: 1412           in js_recv(JSContext *, unsigned int, unsigned
long *)()
/js_socket.cpp: 1415           in js_recv(JSContext *, unsigned int, unsigned
long *)()


________________________________________________________________
____________________________
*** CID 639946:           (CHECKED_RETURN)
/js_socket.cpp: 1412             in js_recv(JSContext *, unsigned int,
unsigned long *)()
1406
1407     	if ((p = (js_socket_private_t*)js_GetClassPrivate(cx, obj,
&js_socket_class)) == NULL) {
1408     		return JS_FALSE;
1409     	}
1410
1411     	if (argc && argv[0] != JSVAL_VOID) {
>>>     CID 639946:           (CHECKED_RETURN)
>>>     Calling "JS_ValueToInt32" without checking return
value (as is done elsewhere 236 out of 268 times).
1412     		JS_ValueToInt32(cx, argv[0], &len);
1413
1414     		if (argc > 1 && argv[1] != JSVAL_VOID) {
1415     			JS_ValueToInt32(cx, argv[1], &timeout);
1416     		}
1417     	}
/js_socket.cpp: 1415             in js_recv(JSContext *, unsigned int,
unsigned lon

<< oldest | < older | list | newer > | newest >> ]

(c) 1994,  bbs@darkrealms.ca