[geary/mjog/misc-criticals: 2/9] Geary.Imap.FolderSession: Fix critical with empty preview buffers



commit b7076188a0e56b36b598e63793afc5f1ca84af42
Author: Michael Gratton <mike vee net>
Date:   Thu Jun 25 20:39:13 2020 +1000

    Geary.Imap.FolderSession: Fix critical with empty preview buffers
    
    Check preview header and body buffers are not empty before attempting
    to extract a preview from them.
    
    Fixes #865 (or at least replaces the crit with a warning)

 src/engine/imap/api/imap-folder-session.vala | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)
---
diff --git a/src/engine/imap/api/imap-folder-session.vala b/src/engine/imap/api/imap-folder-session.vala
index b7c42a862..6494d40d3 100644
--- a/src/engine/imap/api/imap-folder-session.vala
+++ b/src/engine/imap/api/imap-folder-session.vala
@@ -993,13 +993,20 @@ private class Geary.Imap.FolderSession : Geary.Imap.SessionObject {
         // if preview was requested, get it now ... both identifiers
         // must be supplied if one is
         if (preview_specifier != null || preview_charset_specifier != null) {
-            assert(preview_specifier != null && preview_charset_specifier != null);
+            Memory.Buffer? preview_headers = fetched_data.body_data_map.get(
+                preview_charset_specifier
+            );
+            Memory.Buffer? preview_body = fetched_data.body_data_map.get(
+                preview_specifier
+            );
 
-            if (fetched_data.body_data_map.has_key(preview_specifier)
-                && fetched_data.body_data_map.has_key(preview_charset_specifier)) {
-                email.set_message_preview(new RFC822.PreviewText.with_header(
-                    fetched_data.body_data_map.get(preview_charset_specifier),
-                    fetched_data.body_data_map.get(preview_specifier)));
+            if (preview_headers != null && preview_headers.size > 0 &&
+                preview_body != null && preview_body.size > 0) {
+                email.set_message_preview(
+                    new RFC822.PreviewText.with_header(
+                        preview_headers, preview_body
+                    )
+                );
             } else {
                 warning("No preview specifiers \"%s\" and \"%s\" found",
                     preview_specifier.to_string(), preview_charset_specifier.to_string());


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]