aboutsummaryrefslogtreecommitdiffstats
path: root/src/spf.c
diff options
context:
space:
mode:
authorcebka@lenovo-laptop <cebka@lenovo-laptop>2010-03-15 20:54:39 +0300
committercebka@lenovo-laptop <cebka@lenovo-laptop>2010-03-15 20:54:39 +0300
commit21dc91eac153c2dade3c393d0e6f6c4e66d51a94 (patch)
treeaf35c7d36f5546a7c1ec835c6e4f99aa9a460ea4 /src/spf.c
parent9cb57d681480ca0a2b7b709ba2253b04cb5a6f72 (diff)
downloadrspamd-21dc91eac153c2dade3c393d0e6f6c4e66d51a94.tar.gz
rspamd-21dc91eac153c2dade3c393d0e6f6c4e66d51a94.zip
* Fix another spf core dump while parsing 'include' items
Diffstat (limited to 'src/spf.c')
-rw-r--r--src/spf.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/spf.c b/src/spf.c
index 798803a02..0ff92303c 100644
--- a/src/spf.c
+++ b/src/spf.c
@@ -314,6 +314,11 @@ spf_record_dns_callback (int result, char type, int count, int ttl, void *addres
cb->rec->addrs->prev = elt->prev;
}
+ /* Shift temporary list */
+ while (tmp->prev) {
+ tmp = tmp->prev;
+ }
+
cb->rec->addrs = tmp;
g_list_free1 (elt);
}
@@ -370,8 +375,8 @@ spf_record_dns_callback (int result, char type, int count, int ttl, void *addres
cb->rec->task->save.saved--;
if (cb->rec->task->save.saved == 0 && cb->rec->callback) {
+ cb->rec->callback (cb->rec, cb->rec->task);
if (cb->rec->addrs) {
- cb->rec->callback (cb->rec, cb->rec->task);
g_list_free (cb->rec->addrs);
cb->rec->addrs = NULL;
}