]> source.dussan.org Git - rspamd.git/commitdiff
[Minor] Fix some more issues
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Sep 2021 11:13:44 +0000 (12:13 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Tue, 21 Sep 2021 11:13:44 +0000 (12:13 +0100)
Found by: coverity scan

src/libserver/rspamd_control.c
src/libserver/rspamd_symcache.c
src/libserver/ssl_util.c
src/libutil/expression.c
src/libutil/fstring.c
src/lua/lua_tcp.c

index 0021485c38a325ae9b05fa944271225e4110b97c..b16ddf68f1e46c31eb82038cf2736d57cee7d89c 100644 (file)
@@ -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);
 }
 
index 41aa784b6ab1bf51a15f25d2b08a14543bd2f5bc..d1fb6867290b9e69273daf4009198aaf6666daa8 100644 (file)
@@ -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);
                }
index b9fb175e5bf364651e12687b4e245ba6378a92f0..40214ed899e28c4cbc2c5457a3b5b7cdf298d028 100644 (file)
@@ -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);
index ad78c0fcdf6d1c0aa2fa4a928a78da9bd9acc9ee..ccbe66195ec6139be48cadd83693249eddfb1c84 100644 (file)
@@ -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);
index 652d72d1434e66697e51078f59f37df308d572b4..3f3af5357c904de3737400379140036eb97179e6 100644 (file)
@@ -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++) {
index a1c1f0b20663e2f42460ef8ed87b465451e58c81..f15e2539995082739c7cb35d7149ad84bf99ead5 100644 (file)
@@ -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");
        }