From: Vsevolod Stakhov Date: Sun, 15 Jan 2017 19:24:51 +0000 (+0000) Subject: [Minor] Fix some outbound access issues X-Git-Tag: 1.5.0~341 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e0446369d13269d07cecb5711fbab7d7bc64398a;p=thirdparty%2Frspamd.git [Minor] Fix some outbound access issues Found by: Coverity --- diff --git a/src/libmime/mime_expressions.c b/src/libmime/mime_expressions.c index d848f797de..637cccad3e 100644 --- a/src/libmime/mime_expressions.c +++ b/src/libmime/mime_expressions.c @@ -1229,6 +1229,9 @@ is_recipient_list_sorted (GPtrArray *ar) return FALSE; } + prev.len = 0; + prev.begin = NULL; + PTR_ARRAY_FOREACH (ar, i, addr) { cur.begin = addr->addr; cur.len = addr->addr_len; diff --git a/src/libstat/stat_config.c b/src/libstat/stat_config.c index b6b9000d57..ab64e81a44 100644 --- a/src/libstat/stat_config.c +++ b/src/libstat/stat_config.c @@ -166,6 +166,7 @@ rspamd_stat_init (struct rspamd_config *cfg, struct event_base *ev_base) cur = cfg->classifiers; while (cur) { + bk = NULL; clf = cur->data; cl = g_slice_alloc0 (sizeof (*cl)); cl->cfg = clf; @@ -239,7 +240,7 @@ rspamd_stat_init (struct rspamd_config *cfg, struct event_base *ev_base) st->classifier = cl; st->stcf = stf; - if (!(cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND)) { + if (!(cl->cfg->flags & RSPAMD_FLAG_CLASSIFIER_NO_BACKEND) && bk) { st->backend = bk; st->bkcf = bk->init (stat_ctx, cfg, st); msg_debug_config ("added backend %s for symbol %s", diff --git a/src/libutil/util.c b/src/libutil/util.c index 832b7dfb7f..704d650418 100644 --- a/src/libutil/util.c +++ b/src/libutil/util.c @@ -563,10 +563,6 @@ rspamd_sockets_list (const gchar *credits, guint16 port, freeaddrinfo (res); if (result == NULL) { - if (fd != -1) { - close (fd); - } - goto err; } } diff --git a/src/plugins/spf.c b/src/plugins/spf.c index d7b76e003e..e51016429b 100644 --- a/src/plugins/spf.c +++ b/src/plugins/spf.c @@ -374,16 +374,16 @@ spf_check_element (struct spf_resolved *rec, struct spf_addr *addr, /* Compare the first bytes */ bmask = mask / CHAR_BIT; - if (bmask > addrlen) { + if (mask > addrlen * CHAR_BIT) { msg_info_task ("bad mask length: %d", mask); } else if (memcmp (s, d, bmask) == 0) { - - if (bmask * CHAR_BIT != mask) { + if (bmask * CHAR_BIT < mask) { /* Compare the remaining bits */ s += bmask; d += bmask; mask = (0xff << (CHAR_BIT - (mask - bmask * 8))) & 0xff; + if ((*s & mask) == (*d & mask)) { res = TRUE; }