From 86c0996fa8ca4147865211c4ed2045fe446952c3 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 17:38:26 +0300 Subject: [PATCH 01/10] [fs_cli] Coverity 1468564 Buffer not null terminated --- libs/esl/fs_cli.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/fs_cli.c b/libs/esl/fs_cli.c index 973df741e0..f98171b803 100644 --- a/libs/esl/fs_cli.c +++ b/libs/esl/fs_cli.c @@ -1521,7 +1521,7 @@ int main(int argc, char *argv[]) strncpy(internal_profile.host, "127.0.0.1", sizeof(internal_profile.host)); strncpy(internal_profile.pass, "ClueCon", sizeof(internal_profile.pass)); - strncpy(internal_profile.name, hostname, sizeof(internal_profile.name)); + snprintf(internal_profile.name, sizeof(internal_profile.name), "%s", hostname); internal_profile.port = 8021; set_fn_keys(&internal_profile); esl_set_string(internal_profile.prompt_color, prompt_color); From 5854585d2de067c856b34b5893a4c997e35bcc26 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 17:44:33 +0300 Subject: [PATCH 02/10] [libesl] Coverity 1395572 Logically dead code --- libs/esl/src/cJSON.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/libs/esl/src/cJSON.c b/libs/esl/src/cJSON.c index 1f092ea8f9..9287f84694 100644 --- a/libs/esl/src/cJSON.c +++ b/libs/esl/src/cJSON.c @@ -1147,11 +1147,6 @@ fail: hooks->deallocate(buffer->buffer); } - if (printed != NULL) - { - hooks->deallocate(printed); - } - return NULL; } From 47d87e37b6e55697766d1a9eedd6cb07d144a605 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 17:48:28 +0300 Subject: [PATCH 03/10] [libesl] Coverity 1024285 Dereference before null check --- libs/esl/src/esl.c | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 893a068e8c..9304bc5749 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1299,14 +1299,12 @@ ESL_DECLARE(esl_status_t) esl_recv_event(esl_handle_t *handle, int check_q, esl_ *e++ = '\0'; while(*e == '\n' || *e == '\r') e++; - if (hval) { - esl_url_decode(hval); - esl_log(ESL_LOG_DEBUG, "RECV HEADER [%s] = [%s]\n", hname, hval); - if (!strncmp(hval, "ARRAY::", 7)) { - esl_event_add_array(revent, hname, hval); - } else { - esl_event_add_header_string(revent, ESL_STACK_BOTTOM, hname, hval); - } + esl_url_decode(hval); + esl_log(ESL_LOG_DEBUG, "RECV HEADER [%s] = [%s]\n", hname, hval); + if (!strncmp(hval, "ARRAY::", 7)) { + esl_event_add_array(revent, hname, hval); + } else { + esl_event_add_header_string(revent, ESL_STACK_BOTTOM, hname, hval); } p = e; From 62ef2d48225f5a9f8d723f1fd2fdd22e6045414b Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 17:54:59 +0300 Subject: [PATCH 04/10] [libesl] Coverity 1024459 Missing unlock --- libs/esl/src/esl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 9304bc5749..d796860a11 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1217,7 +1217,7 @@ ESL_DECLARE(esl_status_t) esl_recv_event_timed(esl_handle_t *handle, uint32_t ms status = ESL_BREAK; } - if (handle->mutex) esl_mutex_unlock(handle->mutex); + esl_mutex_unlock(handle->mutex); return status; From e48b83fbbfd0becade08fc66bd7ba263ee638972 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 17:59:18 +0300 Subject: [PATCH 05/10] [libesl] Coverity 1024719,1024720 Unchecked return value from library --- libs/esl/src/esl.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index d796860a11..e5c0b95b55 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -696,7 +696,10 @@ ESL_DECLARE(esl_status_t) esl_listen(const char *host, esl_port_t port, esl_list } - esl_socket_reuseaddr(server_sock); + if (esl_socket_reuseaddr(server_sock) != 0) { + status = ESL_FAIL; + goto end; + } memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; @@ -751,7 +754,10 @@ ESL_DECLARE(esl_status_t) esl_listen_threaded(const char *host, esl_port_t port, return ESL_FAIL; } - esl_socket_reuseaddr(server_sock); + if (esl_socket_reuseaddr(server_sock) != 0) { + status = ESL_FAIL; + goto end; + } memset(&addr, 0, sizeof(addr)); addr.sin_family = AF_INET; From f5509a59e852e3ffe48995852dc0d0297e6a0688 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 18:04:09 +0300 Subject: [PATCH 06/10] [libesl] Coverity 1024721 Unchecked return value from library --- libs/esl/src/esl.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index e5c0b95b55..4cadde1776 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1066,7 +1066,10 @@ ESL_DECLARE(esl_status_t) esl_connect_timeout(esl_handle_t *handle, const char * } } #else - fcntl(handle->sock, F_SETFL, fd_flags); + if (fcntl(handle->sock, F_SETFL, fd_flags)) { + snprintf(handle->err, sizeof(handle->err), "Socket Connection Error"); + goto fail; + } #endif rval = 0; } From 8cfde8ad3c4a21330d580c45b732d05a5682b234 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 18:52:50 +0300 Subject: [PATCH 07/10] [libesl] Coverity 1294491 Identical code for different branches --- libs/esl/src/esl.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index 4cadde1776..d29926eb5c 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -284,9 +284,12 @@ ESL_DECLARE(int) esl_snprintf(char *buffer, size_t count, const char *fmt, ...) static void null_logger(const char *file, const char *func, int line, int level, const char *fmt, ...) { - if (file && func && line && level && fmt) { - return; - } + (void)file; + (void)func; + (void)line; + (void)level; + (void)fmt; + return; } From 98a3749c1068e2140ec582a61394b10c30a59d55 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 18:58:34 +0300 Subject: [PATCH 08/10] [libesl] Coverity 1546296 Check of thread-shared field evades lock acquisition --- libs/esl/src/esl.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index d29926eb5c..f39bda83b1 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1531,11 +1531,15 @@ ESL_DECLARE(esl_status_t) esl_send_recv_timed(esl_handle_t *handle, const char * const char *hval; esl_status_t status; - if (!handle || !handle->connected || handle->sock == ESL_SOCK_INVALID) { - return ESL_FAIL; - } + if (!handle) { + return ESL_FAIL; + } esl_mutex_lock(handle->mutex); + if (!handle->connected || handle->sock == ESL_SOCK_INVALID) { + esl_mutex_unlock(handle->mutex); + return ESL_FAIL; + } esl_event_safe_destroy(&handle->last_sr_event); From 17cd75182748a2c4450dd005eca0a8cbd94e2318 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 19:05:04 +0300 Subject: [PATCH 09/10] [libesl] Coverity 1589045 Check of thread-shared field evades lock acquisition --- libs/esl/src/esl.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/libs/esl/src/esl.c b/libs/esl/src/esl.c index f39bda83b1..6f085e26db 100644 --- a/libs/esl/src/esl.c +++ b/libs/esl/src/esl.c @@ -1167,13 +1167,6 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) esl_event_safe_destroy(&handle->last_ievent); esl_event_safe_destroy(&handle->info_event); - if (mutex) { - esl_mutex_unlock(mutex); - esl_mutex_lock(mutex); - esl_mutex_unlock(mutex); - esl_mutex_destroy(&mutex); - } - if (handle->packet_buf) { esl_buffer_destroy(&handle->packet_buf); } @@ -1181,6 +1174,13 @@ ESL_DECLARE(esl_status_t) esl_disconnect(esl_handle_t *handle) memset(handle, 0, sizeof(*handle)); handle->destroyed = 1; + if (mutex) { + esl_mutex_unlock(mutex); + esl_mutex_lock(mutex); + esl_mutex_unlock(mutex); + esl_mutex_destroy(&mutex); + } + return status; } From c3dff0ff958d5ac2fc7e405e36ba2ffcbe1199f9 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Fri, 31 Jan 2025 19:38:24 +0300 Subject: [PATCH 10/10] [libesl] Coverity 1512636 Unused value --- libs/esl/src/esl_event.c | 1 - 1 file changed, 1 deletion(-) diff --git a/libs/esl/src/esl_event.c b/libs/esl/src/esl_event.c index cca7899d80..ea62d2fa3d 100644 --- a/libs/esl/src/esl_event.c +++ b/libs/esl/src/esl_event.c @@ -545,7 +545,6 @@ static esl_status_t esl_event_base_add_header(esl_event_t *event, esl_stack_t st header->value = NULL; header->array = m; header->idx++; - m = NULL; } i = header->idx + 1;