]> source.dussan.org Git - rspamd.git/commitdiff
Fix memory access.
authorVsevolod Stakhov <vsevolod@rambler-co.ru>
Sat, 5 Mar 2011 16:29:41 +0000 (19:29 +0300)
committerVsevolod Stakhov <vsevolod@rambler-co.ru>
Sat, 5 Mar 2011 16:29:41 +0000 (19:29 +0300)
src/plugins/regexp.c
src/worker.c

index 0ab4451e17c18ada49de82ad435da5aed7eba2ba..24d238d8192f5880b3445db0109e5abb6cddfd06 100644 (file)
@@ -908,7 +908,7 @@ process_regexp (struct rspamd_regexp *re, struct worker_task *task, const gchar
                                debug_task ("found header \"%s\" with value \"%s\"", re->header, (const gchar *)cur->data);
                                rh = cur->data;
                                /* Try to match regexp */
-                               if (g_regex_match_full (re->regexp, rh->value, -1, 0, 0, NULL, &err) == TRUE) {
+                               if (rh->value && g_regex_match_full (re->regexp, rh->value, -1, 0, 0, NULL, &err) == TRUE) {
                                        if (G_UNLIKELY (re->is_test)) {
                                                msg_info ("process test regexp %s for header %s with value '%s' returned TRUE", re->regexp_text, re->header, (const gchar *)cur->data);
                                        }
index 738002209b839fdccba813d727479750d7454621..8f1177326cd9b100dfb65d927b18b975e30591b4 100644 (file)
@@ -465,12 +465,12 @@ compare_email_func (gconstpointer a, gconstpointer b)
        const struct uri               *u1 = a, *u2 = b;
        gint                            r;
 
-       if (u1->hostlen != u2->hostlen) {
+       if (u1->hostlen != u2->hostlen || u1->hostlen == 0) {
                return u1->hostlen - u2->hostlen;
        }
        else {
                if ((r = g_ascii_strncasecmp (u1->host, u2->host, u1->hostlen)) == 0){
-                       if (u1->userlen != u2->userlen) {
+                       if (u1->userlen != u2->userlen || u1->userlen == 0) {
                                return u1->userlen - u2->userlen;
                        }
                        else {
@@ -491,7 +491,7 @@ compare_url_func (gconstpointer a, gconstpointer b)
        const struct uri               *u1 = a, *u2 = b;
        int                             r;
 
-       if (u1->hostlen != u2->hostlen) {
+       if (u1->hostlen != u2->hostlen || u1->hostlen == 0) {
                return u1->hostlen - u2->hostlen;
        }
        else {