]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: Fix potential crash with SEARCH MIMEPART FILENAME
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Tue, 14 Oct 2025 14:59:36 +0000 (17:59 +0300)
committertimo.sirainen <timo.sirainen@open-xchange.com>
Wed, 15 Oct 2025 12:22:20 +0000 (12:22 +0000)
If the message contained "Content-Disposition: attachment" without
filename or name parameter, it crashed. Fix by using empty string
as the filename so callers don't need to handle NULL separately.

Broken by bdff009cb37eb51aa7a00e17e1b346df18f95bec

src/lib-mail/message-part-data.c
src/lib-mail/test-message-part-data.c

index 07c077953b99c19e41d600dd66852ad73168c60e..62f42c1078c11cefd5f76ffd612dab9fe3a5decb 100644 (file)
@@ -105,6 +105,12 @@ static bool message_part_data_find_attachment_filename(
            get_param_value("name", data->content_type_params,
                            data->content_type_params_count, filename_r))
                return TRUE;
+       if (default_return && filename_r != NULL) {
+               /* This is an attachment without filename or name parameter.
+                  Just return the filename as empty string, so the caller
+                  doesn't have to handle NULL filename separately. */
+               *filename_r = "";
+       }
        return default_return;
 }
 
index 22ab87aff624a7a83a35829bc7b6d64228acb430..2b29cfac04c27c1692af763e494c5e67ca4de756 100644 (file)
@@ -133,7 +133,7 @@ static void test_message_inline_without_filename(void)
                "\n"
                "xxxdata\n";
 
-       test_message_part_attachment(test_name, input, FALSE, NULL);
+       test_message_part_attachment(test_name, input, FALSE, "");
 }
 
 static void test_message_attachment_without_filename(void)
@@ -146,7 +146,7 @@ static void test_message_attachment_without_filename(void)
                "\n"
                "xxxdata\n";
 
-       test_message_part_attachment(test_name, input, TRUE, NULL);
+       test_message_part_attachment(test_name, input, TRUE, "");
 }
 
 static void test_message_attachment_with_cd_filename_star(void)