]> source.dussan.org Git - rspamd.git/commitdiff
Fix some more issues found by coverity
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 22 Feb 2016 23:39:49 +0000 (23:39 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Mon, 22 Feb 2016 23:39:49 +0000 (23:39 +0000)
src/libserver/url.c
src/libutil/sqlite_utils.c
src/libutil/util.c
src/rspamadm/configdump.c
src/rspamadm/signtool.c
src/rspamd.c
src/smtp_proxy.c
utils/rspamd_http_bench.c
utils/rspamd_http_server.c

index b756b1ca4412868bb1aeea041f93a2e2053c9f9e..fcb72a76bb7204b2a3a1fdf4ffe47164e8ec7977 100644 (file)
@@ -1225,7 +1225,7 @@ rspamd_url_is_ip (struct rspamd_url *uri, rspamd_mempool_t *pool)
                                                        t = GUINT32_TO_BE (t);
                                                        break;
                                                case 3:
-                                                       t = (GUINT32_TO_BE (t & 0xFFFFFFU) >> 8);
+                                                       t = (GUINT32_TO_BE (t & 0xFFFFFFU)) >> 8;
                                                        break;
                                                case 2:
                                                        t = GUINT16_TO_BE (t & 0xFFFFU);
index 883d26580f7f6f7820dae3761d436b236c60b972..452559c76766906a5e1d446556ee5102b7ffaefa 100644 (file)
@@ -366,7 +366,9 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
                                sqlite3_close (sqlite);
                                rspamd_file_unlock (lock_fd, FALSE);
                                unlink (lock_path);
-                               close (lock_fd);
+                               if (lock_fd != -1) {
+                                       close (lock_fd);
+                               }
 
                                return NULL;
                        }
@@ -391,7 +393,11 @@ rspamd_sqlite3_open_or_create (rspamd_mempool_t *pool, const gchar *path, const
        #endif
                        rspamd_file_unlock (lock_fd, FALSE);
                        unlink (lock_path);
-                       close (lock_fd);
+
+                       if (lock_fd != -1) {
+                               close (lock_fd);
+                       }
+
                        return NULL;
                }
        }
index 1d5f49a618d5aa49d4c58e7faee7b6e4fb402546..b0376ca1e5f23ffdca7818e9c58cd77240b46e5b 100644 (file)
@@ -163,6 +163,7 @@ rspamd_inet_socket_create (gint type, struct addrinfo *addr, gboolean is_server,
 {
        gint fd = -1, r, optlen, on = 1, s_error;
        struct addrinfo *cur;
+       gpointer ptr;
 
        cur = addr;
        while (cur) {
@@ -238,7 +239,8 @@ rspamd_inet_socket_create (gint type, struct addrinfo *addr, gboolean is_server,
                        break;
                }
                else if (fd != -1) {
-                       *list = g_list_prepend (*list, GINT_TO_POINTER (fd));
+                       ptr = GINT_TO_POINTER (fd);
+                       *list = g_list_prepend (*list, ptr);
                        cur = cur->ai_next;
                        continue;
                }
@@ -249,6 +251,7 @@ out:
                fd = -1;
                cur = cur->ai_next;
        }
+
        return (fd);
 }
 
@@ -475,6 +478,7 @@ rspamd_sockets_list (const gchar *credits, guint16 port,
        gint r, fd = -1, serrno;
        gchar portbuf[8], **strv, **cur;
        GList *result = NULL, *rcur;
+       gpointer ptr;
 
        strv = g_strsplit_set (credits, ",", -1);
        if (strv == NULL) {
@@ -510,7 +514,8 @@ rspamd_sockets_list (const gchar *credits, guint16 port,
                                }
                        }
                        if (fd != -1) {
-                               result = g_list_prepend (result, GINT_TO_POINTER (fd));
+                               ptr = GINT_TO_POINTER (fd);
+                               result = g_list_prepend (result, ptr);
                                fd = -1;
                        }
                        else {
@@ -564,12 +569,16 @@ err:
        serrno = errno;
        rcur = result;
        while (rcur != NULL) {
-               fd = GPOINTER_TO_INT (rcur->data);
+               ptr = rcur->data;
+               fd = GPOINTER_TO_INT (ptr);
+
                if (fd != -1) {
                        close (fd);
                }
+
                rcur = g_list_next (rcur);
        }
+
        if (result != NULL) {
                g_list_free (result);
        }
index b48009466d9134a0433870d54de3392d854dbf8e..e7d51b442f66eb7b47c1b37194ac7a5042b7c9d7 100644 (file)
@@ -104,6 +104,7 @@ rspamadm_add_doc_elt (const ucl_object_t *obj, const ucl_object_t *doc_obj,
 
        if (ucl_object_lookup_len (comment_obj, (const char *)&obj,
                        sizeof (void *))) {
+               rspamd_fstring_free (comment);
                /* Do not rewrite the existing comment */
                return;
        }
index 998698622a1d717935694512523c8b2b4ab85781..ca426de6cab162ee9ef494b200daeca480e54d28 100644 (file)
@@ -136,7 +136,9 @@ rspamadm_edit_file (const gchar *fname)
 
        rspamd_snprintf (tmppath, sizeof (tmppath),
                        "%s/rspamd_sign-XXXXXXXXXX", tmpdir);
+       mode_t cur_umask = umask (S_IRWXO|S_IRWXG);
        fd_out = mkstemp (tmppath);
+       (void)umask (cur_umask);
 
        if (fd_out == -1) {
                rspamd_fprintf (stderr, "cannot open tempfile %s: %s\n", tmppath,
@@ -213,7 +215,6 @@ rspamadm_edit_file (const gchar *fname)
                rspamd_fprintf (stderr, "cannot map %s: %s\n", tmppath,
                                strerror (errno));
                unlink (tmppath);
-               close (fd_out);
                exit (errno);
        }
 
@@ -225,6 +226,7 @@ rspamadm_edit_file (const gchar *fname)
                rspamd_fprintf (stderr, "cannot open new file %s: %s\n", run_cmdline,
                                strerror (errno));
                unlink (tmppath);
+               munmap (map, len);
                exit (errno);
        }
 
@@ -234,11 +236,13 @@ rspamadm_edit_file (const gchar *fname)
                unlink (tmppath);
                unlink (run_cmdline);
                close (fd_out);
+               munmap (map, len);
                exit (errno);
        }
 
        unlink (tmppath);
        (void)lseek (fd_out, 0, SEEK_SET);
+       munmap (map, len);
 
        return fd_out;
 }
index a01b9db790cf635d733159446cca648010bbed0a..895cc63bf401923a647a86a98415daf436fb073b 100644 (file)
@@ -336,13 +336,15 @@ create_listen_socket (GPtrArray *addrs, guint cnt, gint listen_type)
        GList *result = NULL;
        gint fd;
        guint i;
+       gpointer p;
 
        g_ptr_array_sort (addrs, rspamd_inet_address_compare_ptr);
        for (i = 0; i < cnt; i ++) {
                fd = rspamd_inet_address_listen (g_ptr_array_index (addrs, i),
                                listen_type, TRUE);
                if (fd != -1) {
-                       result = g_list_prepend (result, GINT_TO_POINTER (fd));
+                       p = GINT_TO_POINTER (fd);
+                       result = g_list_prepend (result, p);
                }
        }
 
index 1a1e628b8a5711ef9072699114a2633daf48a4be..dca0359936cc59b3b5d460440ca27f2ebade6a3c 100644 (file)
@@ -642,7 +642,6 @@ smtp_dns_cb (struct rdns_reply *reply, void *arg)
        struct smtp_proxy_session *session = arg;
        gint res = 0;
        struct rdns_reply_entry *elt;
-       GList *cur;
 
        switch (session->state)
        {
@@ -703,7 +702,6 @@ smtp_dns_cb (struct rdns_reply *reply, void *arg)
                                        session->resolved = TRUE;
                                        break;
                                }
-                               cur = g_list_next (cur);
                        }
 
                        if (res == 0) {
index 8007d891bb9a11cfbc13f33e0a97df30c767afbb..c9a752243ad7a5f8192533ec170984d499f4ac62 100644 (file)
@@ -141,10 +141,10 @@ rspamd_http_client_func (struct event_base *ev_base, struct lat_elt *latency,
        struct client_cbdata *cb;
        gint fd, flags;
 
-       g_assert (
-                       (fd = rspamd_inet_address_connect (addr, SOCK_STREAM, TRUE)) != -1);
+       fd = rspamd_inet_address_connect (addr, SOCK_STREAM, TRUE);
+       g_assert (fd != -1);
        flags = 1;
-       setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, &flags, sizeof (flags));
+       (void)setsockopt (fd, IPPROTO_TCP, TCP_NODELAY, &flags, sizeof (flags));
        conn = rspamd_http_connection_new (rspamd_client_body, rspamd_client_err,
                        rspamd_client_finish, RSPAMD_HTTP_CLIENT_SIMPLE,
                        RSPAMD_HTTP_CLIENT, c);
index f861b8a1fc4937b3a6d5d1ecd8fb32294a0139ff..ad01085dfc2bc9a0023ceffdb91f8fb2d6d46d55 100644 (file)
@@ -191,8 +191,8 @@ rspamd_http_start_servers (pid_t *sfd, rspamd_inet_addr_t *addr)
        guint i;
        gint fd;
 
-       g_assert (
-                       (fd = rspamd_inet_address_listen (addr, SOCK_STREAM, TRUE)) != -1);
+       fd = rspamd_inet_address_listen (addr, SOCK_STREAM, TRUE);
+       g_assert (fd != -1);
 
        for (i = 0; i < nworkers; i++) {
                sfd[i] = fork ();