]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Another try to plug a leak
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Jun 2019 14:00:52 +0000 (15:00 +0100)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Wed, 26 Jun 2019 14:00:52 +0000 (15:00 +0100)
src/libmime/lang_detection.c
src/libmime/message.c
src/libserver/task.c

index 3f2a501341deca5dee710e4aeada76e1c0707fb7..7096da58599799bde4eca9df3b47c36152266606 100644 (file)
@@ -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;
                }
index cd3772c782e7a9c7a7378e5f88ba4cd2d8fdcd56..482287769fbb34ba06694e8f372f6d5c0f970bcc 100644 (file)
@@ -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);
                                                }
index 4017b009468b5cde3adcc67a1f8734075d9cab8c..04be617448f58d401a54b3d00784cb6caadcd033 100644 (file)
@@ -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);
                        }
                }