]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Fix] message: Add NULL check for mp->children in alternative detection
authorVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 5 Feb 2026 09:17:47 +0000 (09:17 +0000)
committerVsevolod Stakhov <vsevolod@rspamd.com>
Thu, 5 Feb 2026 09:17:47 +0000 (09:17 +0000)
The multipart children array can be NULL in some edge cases. Add NULL
checks before accessing mp->children->len to prevent segfault in
rspamd_mime_part_find_text_in_subtree() and related code paths.

src/libmime/message.c

index 3b8db306234c87ca93cb75ae7ea60a0da12841be..f7ab7a68860921bd21c0918b44bc0f9ef333ae7e 100644 (file)
@@ -1033,6 +1033,10 @@ rspamd_mime_part_find_text_in_subtree(struct rspamd_mime_part *root,
 
        struct rspamd_mime_multipart *mp = root->specific.mp;
 
+       if (!mp->children) {
+               return NULL;
+       }
+
        for (unsigned int i = 0; i < mp->children->len; i++) {
                struct rspamd_mime_part *child = g_ptr_array_index(mp->children, i);
 
@@ -1221,7 +1225,8 @@ rspamd_message_process_text_part_maybe(struct rspamd_task *task,
                if (mime_part->parent_part) {
                        struct rspamd_mime_part *parent = mime_part->parent_part;
 
-                       if (IS_PART_MULTIPART(parent) && parent->specific.mp->children->len == 2) {
+                       if (IS_PART_MULTIPART(parent) && parent->specific.mp->children &&
+                               parent->specific.mp->children->len == 2) {
                                /*
                                 * Use strict extraction mode: we will extract missing urls from
                                 * an html part if needed