summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2019-06-26 15:00:52 +0100
committerVsevolod Stakhov <vsevolod@highsecure.ru>2019-06-26 15:00:52 +0100
commite7d92f9a0a4a90778861b3247297a60e7bf464c9 (patch)
tree8813de3e53e02df589d1beddda6e5a7e35d8a7bc /src
parent4ac44f3b22819c2046b7820721e8f7ddd774b505 (diff)
downloadrspamd-e7d92f9a0a4a90778861b3247297a60e7bf464c9.tar.gz
rspamd-e7d92f9a0a4a90778861b3247297a60e7bf464c9.zip
[Minor] Another try to plug a leak
Diffstat (limited to 'src')
-rw-r--r--src/libmime/lang_detection.c4
-rw-r--r--src/libmime/message.c8
-rw-r--r--src/libserver/task.c2
3 files changed, 13 insertions, 1 deletions
diff --git a/src/libmime/lang_detection.c b/src/libmime/lang_detection.c
index 3f2a50134..7096da585 100644
--- a/src/libmime/lang_detection.c
+++ b/src/libmime/lang_detection.c
@@ -1828,6 +1828,10 @@ rspamd_language_detector_detect (struct rspamd_task *task,
d->total_occurencies++;
}
+ if (part->languages != NULL) {
+ g_ptr_array_unref (part->languages);
+ }
+
part->languages = result;
ret = TRUE;
}
diff --git a/src/libmime/message.c b/src/libmime/message.c
index cd3772c78..482287769 100644
--- a/src/libmime/message.c
+++ b/src/libmime/message.c
@@ -1424,10 +1424,18 @@ rspamd_message_process (struct rspamd_task *task)
if (sel->language && sel->language[0]) {
/* Propagate language */
if (sel == p1) {
+ if (p2->languages) {
+ g_ptr_array_unref (p2->languages);
+ }
+
p2->language = sel->language;
p2->languages = g_ptr_array_ref (sel->languages);
}
else {
+ if (p1->languages) {
+ g_ptr_array_unref (p1->languages);
+ }
+
p1->language = sel->language;
p1->languages = g_ptr_array_ref (sel->languages);
}
diff --git a/src/libserver/task.c b/src/libserver/task.c
index 4017b0094..04be61744 100644
--- a/src/libserver/task.c
+++ b/src/libserver/task.c
@@ -271,7 +271,7 @@ rspamd_task_free (struct rspamd_task *task)
g_array_free (tp->normalized_hashes, TRUE);
}
if (tp->languages) {
- g_ptr_array_free (tp->languages, TRUE);
+ g_ptr_array_unref (tp->languages);
}
}