diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-09-21 12:13:44 +0100 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2021-09-21 12:13:44 +0100 |
commit | 7fee396041bb1250086c76517c02d8471c93a40c (patch) | |
tree | 91c48f10ee17d9c21da5cdadac8dad03159c927f /src | |
parent | 077cee773330eda0b994b7b70fa1d6ec307db478 (diff) | |
download | rspamd-7fee396041bb1250086c76517c02d8471c93a40c.tar.gz rspamd-7fee396041bb1250086c76517c02d8471c93a40c.zip |
[Minor] Fix some more issues
Found by: coverity scan
Diffstat (limited to 'src')
-rw-r--r-- | src/libserver/rspamd_control.c | 4 | ||||
-rw-r--r-- | src/libserver/rspamd_symcache.c | 8 | ||||
-rw-r--r-- | src/libserver/ssl_util.c | 2 | ||||
-rw-r--r-- | src/libutil/expression.c | 4 | ||||
-rw-r--r-- | src/libutil/fstring.c | 25 | ||||
-rw-r--r-- | src/lua/lua_tcp.c | 4 |
6 files changed, 27 insertions, 20 deletions
diff --git a/src/libserver/rspamd_control.c b/src/libserver/rspamd_control.c index 0021485c3..b16ddf68f 100644 --- a/src/libserver/rspamd_control.c +++ b/src/libserver/rspamd_control.c @@ -781,7 +781,9 @@ rspamd_control_ignore_io_handler (int fd, short what, void *ud) struct rspamd_control_reply rep; /* At this point we just ignore replies from the workers */ - (void) !read (fd, &rep, sizeof (rep)); + if (read (fd, &rep, sizeof (rep)) == -1) { + msg_debug("cannot read %d bytes: %s", sizeof(rep), strerror(errno)); + } rspamd_control_stop_pending (elt); } diff --git a/src/libserver/rspamd_symcache.c b/src/libserver/rspamd_symcache.c index 41aa784b6..d1fb68672 100644 --- a/src/libserver/rspamd_symcache.c +++ b/src/libserver/rspamd_symcache.c @@ -588,8 +588,10 @@ rspamd_symcache_process_dep (struct rspamd_symcache *cache, vdit = rspamd_symcache_find_filter (cache, dep->sym, false); if (!vdit) { - msg_err_cache ("cannot add dependency from %s on %s: no dependency symbol registered", - dep->sym, dit->symbol); + if (dit) { + msg_err_cache ("cannot add dependency from %s on %s: no dependency symbol registered", + dep->sym, dit->symbol); + } } else { msg_debug_cache ("process virtual dependency %s(%d) on %s(%d)", it->symbol, @@ -698,7 +700,7 @@ rspamd_symcache_post_init (struct rspamd_symcache *cache) vit = rspamd_symcache_find_filter (cache, ddep->from, false); it = rspamd_symcache_find_filter (cache, ddep->from, true); - if (it == NULL) { + if (it == NULL || vit == NULL) { msg_err_cache ("cannot register delayed dependency between %s and %s: " "%s is missing", ddep->from, ddep->to, ddep->from); } diff --git a/src/libserver/ssl_util.c b/src/libserver/ssl_util.c index b9fb175e5..40214ed89 100644 --- a/src/libserver/ssl_util.c +++ b/src/libserver/ssl_util.c @@ -637,7 +637,7 @@ rspamd_ssl_connection_new (gpointer ssl_ctx, struct ev_loop *ev_base, conn->verify_peer = verify_peer; if (log_tag) { - rspamd_strlcpy (conn->log_tag, log_tag, sizeof (log_tag)); + rspamd_strlcpy (conn->log_tag, log_tag, sizeof (conn->log_tag)); } else { rspamd_random_hex (conn->log_tag, sizeof (log_tag) - 1); diff --git a/src/libutil/expression.c b/src/libutil/expression.c index ad78c0fcd..ccbe66195 100644 --- a/src/libutil/expression.c +++ b/src/libutil/expression.c @@ -1183,7 +1183,9 @@ rspamd_parse_expression (const gchar *line, gsize len, return TRUE; error_label: - msg_debug_expression ("fatal error: %e", *err); + if (err && *err) { + msg_debug_expression ("fatal expression parse error: %e", *err); + } while ((tmp = rspamd_expr_stack_elt_pop (operand_stack)) != NULL) { g_node_destroy (tmp); diff --git a/src/libutil/fstring.c b/src/libutil/fstring.c index 652d72d14..3f3af5357 100644 --- a/src/libutil/fstring.c +++ b/src/libutil/fstring.c @@ -272,25 +272,22 @@ rspamd_fstrhash_lc (const rspamd_ftok_t * str, gboolean is_utf) p = str->begin; hval = str->len; + end = p + str->len; if (is_utf) { - while (end < str->begin + str->len) { - if (rspamd_fast_utf8_validate (p, str->len) != 0) { - return rspamd_fstrhash_lc (str, FALSE); - } - while (p < end) { - uc = g_unichar_tolower (g_utf8_get_char (p)); - for (j = 0; j < sizeof (gunichar); j++) { - t = (uc >> (j * 8)) & 0xff; - if (t != 0) { - hval = fstrhash_c (t, hval); - } + if (rspamd_fast_utf8_validate (p, str->len) != 0) { + return rspamd_fstrhash_lc (str, FALSE); + } + while (p < end) { + uc = g_unichar_tolower (g_utf8_get_char (p)); + for (j = 0; j < sizeof (gunichar); j++) { + t = (uc >> (j * 8)) & 0xff; + if (t != 0) { + hval = fstrhash_c (t, hval); } - p = g_utf8_next_char (p); } - p = end + 1; + p = g_utf8_next_char (p); } - } else { for (i = 0; i < str->len; i++, p++) { diff --git a/src/lua/lua_tcp.c b/src/lua/lua_tcp.c index a1c1f0b20..f15e25399 100644 --- a/src/lua/lua_tcp.c +++ b/src/lua/lua_tcp.c @@ -1521,6 +1521,8 @@ lua_tcp_request (lua_State *L) event_loop = *(struct ev_loop **)lua_touserdata (L, -1); } else { + g_free (cbd); + return luaL_error (L, "event loop is required"); } lua_pop (L, 1); @@ -1693,6 +1695,8 @@ lua_tcp_request (lua_State *L) if (resolver == NULL && cfg == NULL && task == NULL) { g_free (cbd); + g_free (iov); + return luaL_error (L, "tcp request has bad params: one of " "{resolver,task,config} should be set"); } |