[git] GpgOL - branch, master, updated. outlook-2007-removal-18-gc9a1737

by Andre Heinecke cvs at cvs.gnupg.org
Mon Jun 11 18:24:12 CEST 2018


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GnuPG extension for MS Outlook".

The branch, master has been updated
       via  c9a173782e33b9709aae8f57c52db32538e1f852 (commit)
       via  a1a0f0aa53b0be2da786c8cfbdf10d03d1d4b1bf (commit)
       via  49cc27fd092d8a7cb83a78c715a52764a1605652 (commit)
       via  5a2f1ac5880d0ce481026034c02e851fab67d48a (commit)
      from  75e02a5985d3a57668ce7ea8b0057ca919850b1a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit c9a173782e33b9709aae8f57c52db32538e1f852
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Mon Jun 11 18:19:48 2018 +0200

    Clean reply / forwards of unsigned S/MIME Mails
    
    * src/mailitem-events.cpp (EVENT_SINK_INVOKE): Improve
    reply / forward handling and check for HTML Blocked Mails to
    clean them.
    * src/windowmessages.cpp, src/windowmessages.h
    (do_in_ui_thread_async): Extend to take delay as opt. param.
    (CLEAR_REPLY_FORWARD): New message.
    (gpgol_window_proc): Handle it.
    
    --
    This is ugly ugly ugly. As we don't have a reliable
    way to detect when a reply / forward is filled with data
    we just wait a second before wiping the reply if necessary.
    
    The change in the write event to not invalidate the
    last mail also poses a regression risk.
    
    GnuPG-Bug-Id: T3986

diff --git a/src/mailitem-events.cpp b/src/mailitem-events.cpp
index e4dd961..9effeb1 100644
--- a/src/mailitem-events.cpp
+++ b/src/mailitem-events.cpp
@@ -135,6 +135,8 @@ EVENT_SINK_INVOKE(MailItemEvents)
           return S_OK;
         }
     }
+
+  bool is_reply = false;
   switch(dispid)
     {
       case Open:
@@ -592,7 +594,10 @@ EVENT_SINK_INVOKE(MailItemEvents)
                                  " Pass but schedule revert.",
                                  SRCNAME, __func__);
 
-                      Mail::invalidate_last_mail ();
+                      /* This might be a forward. So don't invalidate yet. */
+
+                      // Mail::invalidate_last_mail ();
+
                       do_in_ui_thread_async (REVERT_MAIL, m_mail);
                       return S_OK;
                     }
@@ -719,10 +724,16 @@ EVENT_SINK_INVOKE(MailItemEvents)
                          SRCNAME, __func__);
           return S_OK;
         }
+      /* Fallthrough */
+      case ReplyAll:
+      case Reply:
+        {
+          is_reply = true;
+        }
       case Forward:
         {
-          log_oom_extra ("%s:%s: Forward: %p",
-                         SRCNAME, __func__, m_mail);
+          log_oom_extra ("%s:%s: %s : %p",
+                         SRCNAME, __func__, is_reply ? "reply" : "forward", m_mail);
           if (!m_mail->is_crypto_mail ())
             {
               /* Non crypto mails do not interest us.*/
@@ -746,18 +757,52 @@ EVENT_SINK_INVOKE(MailItemEvents)
 
               if (!lastSize && !lastEntryStr.size ())
                 {
-                  log_debug ("%s:%s: Forward in the same loop as empty load."
-                             " Marking %p (item %p) as forwarded.",
-                             SRCNAME, __func__, last_mail, last_mail->item ());
+                  if (!is_reply)
+                    {
+                      log_debug ("%s:%s: Forward in the same loop as empty "
+                                 "load Marking %p (item %p) as forwarded.",
+                                 SRCNAME, __func__, last_mail,
+                                 last_mail->item ());
 
-                  last_mail->set_is_forwarded_crypto_mail (true);
+                      last_mail->set_is_forwarded_crypto_mail (true);
+                    }
+                  else
+                    {
+                      log_debug ("%s:%s: Reply in the same loop as empty "
+                                 "load Marking %p (item %p) as reply.",
+                                 SRCNAME, __func__, last_mail,
+                                 last_mail->item ());
+                    }
+                  if (m_mail->is_block_html())
+                    {
+                      std::string caption = _("GpgOL") + std::string (": ");
+                      caption += is_reply ? _("Dangerous reply") :
+                                            _("Dangerous forward");
+                      std::string buf = _("Unsigned S/MIME mails are not integrity "
+                                          "protected.");
+                      buf += "\n\n";
+
+                      if (is_reply)
+                        {
+                          buf += _("For security reasons no decrypted contents"
+                                   " are included in this reply.");
+                        }
+                      else
+                        {
+                          buf += _("For security reasons no decrypted contents"
+                                   " are included in the forwarded mail.");
+                        }
+
+                      gpgol_message_box (get_active_hwnd (), buf.c_str(),
+                                         _("GpgOL"), MB_OK);
+
+                      do_in_ui_thread_async (CLEAR_REPLY_FORWARD, last_mail, 1000);
+                    }
                 }
+              // We can now invalidate the last mail
+              Mail::invalidate_last_mail ();
             }
-        }
-      /* Fallthrough */
-      case Reply:
-      case ReplyAll:
-        {
+
           log_oom_extra ("%s:%s: Reply Forward ReplyAll: %p",
                          SRCNAME, __func__, m_mail);
           if (!opt.reply_crypt)
diff --git a/src/windowmessages.cpp b/src/windowmessages.cpp
index 73292d1..36c0631 100644
--- a/src/windowmessages.cpp
+++ b/src/windowmessages.cpp
@@ -182,6 +182,19 @@ gpgol_window_proc (HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
               xfree (ctx->data);
               break;
             }
+          case (CLEAR_REPLY_FORWARD):
+            {
+              auto mail = (Mail*) ctx->data;
+              if (!Mail::is_valid_ptr (mail))
+                {
+                  log_debug ("%s:%s: Clear reply forward for mail which is gone.",
+                             SRCNAME, __func__);
+                  break;
+                }
+              mail->wipe (true);
+              mail->remove_all_attachments ();
+              break;
+            }
           default:
             log_debug ("%s:%s: Unknown msg %x",
                        SRCNAME, __func__, ctx->wmsg_type);
@@ -242,7 +255,7 @@ send_msg_to_ui_thread (wm_ctx_t *ctx)
 int
 do_in_ui_thread (gpgol_wmsg_type type, void *data)
 {
-  wm_ctx_t ctx = {NULL, UNKNOWN, 0};
+  wm_ctx_t ctx = {NULL, UNKNOWN, 0, 0};
   ctx.wmsg_type = type;
   ctx.data = data;
   if (send_msg_to_ui_thread (&ctx))
@@ -256,19 +269,25 @@ static DWORD WINAPI
 do_async (LPVOID arg)
 {
   wm_ctx_t *ctx = (wm_ctx_t*) arg;
-  log_debug ("%s:%s: Do async with type %i",
-             SRCNAME, __func__, ctx ? ctx->wmsg_type : -1);
+  log_debug ("%s:%s: Do async with type %i after %i ms",
+             SRCNAME, __func__, ctx ? ctx->wmsg_type : -1,
+             ctx->delay);
+  if (ctx->delay)
+    {
+      Sleep (ctx->delay);
+    }
   send_msg_to_ui_thread (ctx);
   xfree (ctx);
   return 0;
 }
 
 void
-do_in_ui_thread_async (gpgol_wmsg_type type, void *data)
+do_in_ui_thread_async (gpgol_wmsg_type type, void *data, int delay)
 {
   wm_ctx_t *ctx = (wm_ctx_t *) calloc (1, sizeof (wm_ctx_t));
   ctx->wmsg_type = type;
   ctx->data = data;
+  ctx->delay = delay;
 
   CloseHandle (CreateThread (NULL, 0, do_async, (LPVOID) ctx, 0, NULL));
 }
diff --git a/src/windowmessages.h b/src/windowmessages.h
index 56d9db8..dcc372c 100644
--- a/src/windowmessages.h
+++ b/src/windowmessages.h
@@ -52,6 +52,7 @@ typedef enum _gpgol_wmsg_type
   BRING_TO_FRONT, /* Bring the active Outlook window to the front. */
   INVALIDATE_LAST_MAIL,
   REVERT_MAIL,
+  CLEAR_REPLY_FORWARD,
 } gpgol_wmsg_type;
 
 typedef struct
@@ -59,6 +60,7 @@ typedef struct
   void *data; /* Pointer to arbitrary data depending on msg type */
   gpgol_wmsg_type wmsg_type; /* Type of the msg. */
   int err; /* Set to true on error */
+  int delay;
 } wm_ctx_t;
 
 /** Create and register the responder window.
@@ -77,9 +79,12 @@ int
 do_in_ui_thread (gpgol_wmsg_type type, void *data);
 
 /** Send a message to the UI thread but returns
-    immediately without waiting for the execution. */
+    immediately without waiting for the execution.
+
+    The delay is used in the detached thread to delay
+    the sending of the actual message. */
 void
-do_in_ui_thread_async (gpgol_wmsg_type type, void *data);
+do_in_ui_thread_async (gpgol_wmsg_type type, void *data, int delay = 0);
 
 /** Create our filter before outlook Window Messages. */
 HHOOK

commit a1a0f0aa53b0be2da786c8cfbdf10d03d1d4b1bf
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Mon Jun 11 18:17:03 2018 +0200

    Extend mail class for better reply/forward handling
    
    * src/mail.cpp, src/mail.h (Mail::set_is_reply_crypto_mail),
    (Maill::is_reply_crypto_mail, m_is_reply_crypto_mail): New flag for
    replies.
    (Mail::remove_all_attachements): New helper.
    (Mail::is_block_html): Expose the flag.
    
    --
    This helps with:
    GnuPG-Bug-Id: T3986

diff --git a/src/mail.cpp b/src/mail.cpp
index e5c2b3a..47d7367 100644
--- a/src/mail.cpp
+++ b/src/mail.cpp
@@ -92,6 +92,7 @@ Mail::Mail (LPDISPATCH mailitem) :
     m_window(nullptr),
     m_async_crypt_disabled(false),
     m_is_forwarded_crypto_mail(false),
+    m_is_reply_crypto_mail(false),
     m_is_send_again(false),
     m_disable_att_remove_warning(false)
 {
@@ -2976,6 +2977,51 @@ Mail::locate_all_crypto_recipients()
 }
 
 int
+Mail::remove_all_attachments ()
+{
+  int ret = 0;
+  LPDISPATCH attachments = get_oom_object (m_mailitem, "Attachments");
+  if (!attachments)
+    {
+      TRACEPOINT;
+      return 0;
+    }
+  int count = get_oom_int (attachments, "Count");
+  LPDISPATCH to_delete[count];
+
+  /* Populate the array so that we don't get in an index mess */
+  for (int i = 1; i <= count; i++)
+    {
+      auto item_str = std::string("Item(") + std::to_string (i) + ")";
+      to_delete[i-1] = get_oom_object (attachments, item_str.c_str());
+    }
+  gpgol_release (attachments);
+
+  /* Now delete all attachments */
+  for (int i = 0; i < count; i++)
+    {
+      LPDISPATCH attachment = to_delete[i];
+
+      if (!attachment)
+        {
+          log_error ("%s:%s: No such attachment %i",
+                     SRCNAME, __func__, i);
+          ret = -1;
+        }
+
+      /* Delete the attachments that are marked to delete */
+      if (invoke_oom_method (attachment, "Delete", NULL))
+        {
+          log_error ("%s:%s: Deleting attachment %i",
+                     SRCNAME, __func__, i);
+          ret = -1;
+        }
+      gpgol_release (attachment);
+    }
+  return ret;
+}
+
+int
 Mail::remove_our_attachments ()
 {
   LPDISPATCH attachments = get_oom_object (m_mailitem, "Attachments");
diff --git a/src/mail.h b/src/mail.h
index 20e737a..7f4ed7b 100644
--- a/src/mail.h
+++ b/src/mail.h
@@ -455,11 +455,20 @@ public:
   void set_is_forwarded_crypto_mail (bool value) { m_is_forwarded_crypto_mail = value; }
   bool is_forwarded_crypto_mail () { return m_is_forwarded_crypto_mail; }
 
+  /** Set if this is a reply of a crypto mail. */
+  void set_is_reply_crypto_mail (bool value) { m_is_reply_crypto_mail = value; }
+  bool is_reply_crypto_mail () { return m_is_reply_crypto_mail; }
+
   /** Remove the hidden GpgOL attachments. This is needed when forwarding
     without encryption so that our attachments are not included in the forward.
     Returns 0 on success. Works in OOM. */
   int remove_our_attachments ();
 
+  /** Remove all attachments. Including our own. This is needed for
+    forwarding of unsigned S/MIME mails (Efail).
+    Returns 0 on success. Works in OOM. */
+  int remove_all_attachments ();
+
   /** Check both OOM and MAPI if the body is either empty or
     encrypted. Won't abort on OOM or MAPI errors, so it can be
     used in both states. But will return false if a body
@@ -490,6 +499,7 @@ public:
 
   /* Block loading HTML content */
   void set_block_html (bool value);
+  bool is_block_html () const { return m_block_html; }
 
   /* Remove automatic loading of HTML references setting. */
   void set_block_status ();
@@ -534,6 +544,7 @@ private:
   bool m_async_crypt_disabled;
   std::string m_mime_data;
   bool m_is_forwarded_crypto_mail; /* Is this a forward of a crypto mail */
+  bool m_is_reply_crypto_mail; /* Is this a reply to a crypto mail */
   bool m_is_send_again; /* Is this a send again of a crypto mail */
   bool m_disable_att_remove_warning; /* Should not warn about attachment removal. */
   bool m_block_html; /* Force blocking of html content. e.g for unsigned S/MIME mails. */

commit 49cc27fd092d8a7cb83a78c715a52764a1605652
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Mon Jun 11 18:15:14 2018 +0200

    Improve unsigned S/MIME HTML handling
    
    * src/mail.cpp (update_body): Improve handling and messages.
    
    --
    GnuPG-Bug-Id: T3986

diff --git a/src/mail.cpp b/src/mail.cpp
index b2d0fbe..e5c2b3a 100644
--- a/src/mail.cpp
+++ b/src/mail.cpp
@@ -1082,35 +1082,63 @@ Mail::update_body()
   // No need to carry body anymore
   m_orig_body = std::string();
   auto html = m_parser->get_html_body ();
+  auto body = m_parser->get_body ();
   /** Outlook does not show newlines if \r\r\n is a newline. We replace
     these as apparently some other buggy MUA sends this. */
   find_and_replace (html, "\r\r\n", "\r\n");
-  if (opt.prefer_html && !html.empty() && !m_block_html)
+  if (opt.prefer_html && !html.empty())
     {
-      const auto charset = m_parser->get_html_charset();
-
-      int codepage = 0;
-      if (charset.empty())
+      if (!m_block_html)
         {
-          codepage = get_oom_int (m_mailitem, "InternetCodepage");
-          log_debug ("%s:%s: Did not find html charset."
-                     " Using internet Codepage %i.",
-                     SRCNAME, __func__, codepage);
-        }
+          const auto charset = m_parser->get_html_charset();
 
-      char *converted = ansi_charset_to_utf8 (charset.c_str(), html.c_str(),
-                                              html.size(), codepage);
-      int ret = put_oom_string (m_mailitem, "HTMLBody", converted ? converted : "");
-      xfree (converted);
-      if (ret)
+          int codepage = 0;
+          if (charset.empty())
+            {
+              codepage = get_oom_int (m_mailitem, "InternetCodepage");
+              log_debug ("%s:%s: Did not find html charset."
+                         " Using internet Codepage %i.",
+                         SRCNAME, __func__, codepage);
+            }
+
+          char *converted = ansi_charset_to_utf8 (charset.c_str(), html.c_str(),
+                                                  html.size(), codepage);
+          int ret = put_oom_string (m_mailitem, "HTMLBody", converted ?
+                                                            converted : "");
+          xfree (converted);
+          if (ret)
+            {
+              log_error ("%s:%s: Failed to modify html body of item.",
+                         SRCNAME, __func__);
+            }
+
+          return;
+        }
+      else if (!body.empty())
         {
-          log_error ("%s:%s: Failed to modify html body of item.",
-                     SRCNAME, __func__);
+          /* We had a multipart/alternative mail but html should be
+             blocked. So we prefer the text/plain part and warn
+             once about this so that we hopefully don't get too
+             many bugreports about this. */
+          if (!opt.smime_html_warn_shown)
+            {
+              std::string caption = _("GpgOL") + std::string (": ") +
+                std::string (_("HTML display disabled."));
+              std::string buf = _("HTML content in unsigned S/MIME mails "
+                                  "is insecure.");
+              buf += "\n";
+              buf += _("GpgOL will only show such mails as text.");
+
+              buf += "\n\n";
+              buf += _("This message is shown only once.");
+
+              gpgol_message_box (get_window(), buf.c_str(), caption.c_str(),
+                                 MB_OK);
+              opt.smime_html_warn_shown = true;
+              write_options ();
+            }
         }
-
-      return;
     }
-  auto body = m_parser->get_body ();
 
   if (body.empty () && m_block_html && !html.empty())
     {
@@ -1163,13 +1191,19 @@ Mail::update_body()
         }
 #endif
       body = html;
-      std::string buf = _("HTML display disabled.");
+      std::string caption = _("GpgOL") + std::string (": ") +
+        std::string (_("HTML display disabled."));
+      std::string buf = _("HTML content in unsigned S/MIME mails "
+                          "is insecure.");
+      buf += "\n";
+      buf += _("GpgOL will only show such mails as text.");
+
       buf += "\n\n";
-      buf += _("For security reasons HTML content in unsigned, encrypted\n"
-               "S/MIME mails cannot be displayed.\n\n"
-               "Please ask the sender to sign the message or to send it as plain text.");
+      buf += _("Please ask the sender to sign the message or\n"
+               "to send it with a plain text alternative.");
 
-      gpgol_message_box (get_window(), buf.c_str() , _("GpgOL"), MB_OK);
+      gpgol_message_box (get_window(), buf.c_str(), caption.c_str(),
+                         MB_OK);
     }
 
   find_and_replace (body, "\r\r\n", "\r\n");

commit 5a2f1ac5880d0ce481026034c02e851fab67d48a
Author: Andre Heinecke <aheinecke at intevation.de>
Date:   Mon Jun 11 18:12:17 2018 +0200

    Cleanup unused options and add a warning shown opt
    
    * src/common_indep.h: Update option struct.
    * src/main.c (init_options): Removed.
    (write_options, read_options): Update accordingly.
    * src/mapihelp.cpp (mapi_get_gpgol_body_attachment): Remove
    obsolete handling to show body as attachment.
    
    --
    This removes obsolete OL < 2010 Options and adds a new
    smime_html_warn_shown flag.

diff --git a/src/common_indep.h b/src/common_indep.h
index 7332dbd..f1805a9 100644
--- a/src/common_indep.h
+++ b/src/common_indep.h
@@ -186,20 +186,14 @@ struct
                                 larger than 1 increases the debug log
                                 verbosity.  */
   int enable_smime;	     /* Enable S/MIME support. */
-  int passwd_ttl;            /* Time in seconds the passphrase is stored. */
-  protocol_t default_protocol;/* The default protocol. */
   int encrypt_default;       /* Encrypt by default. */
   int sign_default;          /* Sign by default. */
-  int enc_format;            /* Encryption format for attachments. */
   char *default_key;         /* The key we want to always encrypt to. */
-  int enable_default_key;    /* Enable the use of DEFAULT_KEY. */
-  int preview_decrypt;       /* Decrypt in preview window. */
   int prefer_html;           /* Prefer html in html/text alternatives. */
-  int body_as_attachment;    /* Present encrypted message as attachment.  */
   int inline_pgp;            /* Only for Addin. Use Inline PGP by default. */
   int autoresolve;           /* Autresolve keys with --locate-keys. */
   int reply_crypt;           /* Only for Addin. Encrypt / Sign based on cryptostatus. */
-  int deprecation_shown;     /* Flag to save if deprecation warning was shown */
+  int smime_html_warn_shown; /* Flag to save if unsigned smime warning was shown */
 
   /* The compatibility flags. */
   struct
diff --git a/src/main.c b/src/main.c
index 186620e..02c53df 100644
--- a/src/main.c
+++ b/src/main.c
@@ -39,16 +39,6 @@ static void drop_locale_dir (char *locale_dir);
 int g_ol_version_major;
 
 
-

-/* Initialization of gloabl options.  These are merely the defaults
-   and will get updated later from the Registry.  That is done later
-   at the time Outlook calls its entry point the first time. */
-static void
-init_options (void)
-{
-  opt.enc_format = GPG_FMT_CLASSIC;
-}
-
 /* For certain operations we need to acquire a log on the logging
    functions.  This lock is controlled by this Mutex. */
 HANDLE log_mutex;
@@ -169,7 +159,6 @@ DllMain (HINSTANCE hinst, DWORD reason, LPVOID reserved)
       if (initialize_main ())
         return FALSE;
       i18n_init ();
-      init_options ();
     }
   else if (reason == DLL_PROCESS_DETACH)
     {
@@ -306,17 +295,6 @@ read_options (void)
   opt.enable_smime = !val ? 0 : atoi (val);
   xfree (val); val = NULL;
 
-/*   load_extension_value ("defaultProtocol", &val); */
-/*   switch ((!val || *val == '0')? 0 : atol (val)) */
-/*     { */
-/*     case 1: opt.default_protocol = PROTOCOL_OPENPGP; break; */
-/*     case 2: opt.default_protocol = PROTOCOL_SMIME; break; */
-/*     case 0: */
-/*     default: opt.default_protocol = PROTOCOL_UNKNOWN /\*(auto*)*\/; break; */
-/*     } */
-/*   xfree (val); val = NULL; */
-  opt.default_protocol = PROTOCOL_UNKNOWN; /* (auto)*/
-
   load_extension_value ("encryptDefault", &val);
   opt.encrypt_default = val == NULL || *val != '1'? 0 : 1;
   xfree (val); val = NULL;
@@ -325,18 +303,6 @@ read_options (void)
   opt.sign_default = val == NULL || *val != '1'? 0 : 1;
   xfree (val); val = NULL;
 
-  load_extension_value ("previewDecrypt", &val);
-  opt.preview_decrypt = val == NULL || *val != '1'? 0 : 1;
-  xfree (val); val = NULL;
-
-  load_extension_value ("enableDefaultKey", &val);
-  opt.enable_default_key = val == NULL || *val != '1' ? 0 : 1;
-  xfree (val); val = NULL;
-
-  load_extension_value ("encodingFormat", &val);
-  opt.enc_format = val == NULL? GPG_FMT_CLASSIC  : atol (val);
-  xfree (val); val = NULL;
-
   load_extension_value ("defaultKey", &val);
   set_default_key (val);
   xfree (val); val = NULL;
@@ -353,10 +319,6 @@ read_options (void)
   opt.announce_number = val? atol (val) : 0;
   xfree (val); val = NULL;
 
-  load_extension_value ("bodyAsAttachment", &val);
-  opt.body_as_attachment = val == NULL || *val != '1'? 0 : 1;
-  xfree (val); val = NULL;
-
   load_extension_value ("inlinePGP", &val);
   opt.inline_pgp = val == NULL || *val != '1'? 0 : 1;
   xfree (val); val = NULL;
@@ -366,8 +328,8 @@ read_options (void)
   load_extension_value ("replyCrypt", &val);
   opt.reply_crypt = val == NULL ? 1 : *val != '1' ? 0 : 1;
   xfree (val); val = NULL;
-  load_extension_value ("deprecationShown", &val);
-  opt.deprecation_shown = val == NULL || *val != '1'? 0 : 1;
+  load_extension_value ("smimeHtmlWarnShown", &val);
+  opt.smime_html_warn_shown = val == NULL || *val != '1'? 0 : 1;
   xfree (val); val = NULL;
   /* Note, that on purpose these flags are only Registry changeable.
      The format of the entry is a string of of "0" and "1" digits; see
@@ -426,22 +388,16 @@ write_options (void)
     char *s_val;
   } table[] = {
     {"enableSmime",              0, opt.enable_smime, NULL},
-/*     {"defaultProtocol",          3, opt.default_protocol}, */
     {"encryptDefault",           0, opt.encrypt_default, NULL},
     {"signDefault",              0, opt.sign_default, NULL},
-    {"previewDecrypt",           0, opt.preview_decrypt, NULL},
-    {"encodingFormat",           1, opt.enc_format, NULL},
     {"logFile",                  2, 0, (char*) get_log_file ()},
-    {"defaultKey",               2, 0, opt.default_key},
-    {"enableDefaultKey",         0, opt.enable_default_key, NULL},
     {"gitCommit",                4, opt.git_commit, NULL},
     {"formsRevision",            1, opt.forms_revision, NULL},
     {"announceNumber",           1, opt.announce_number, NULL},
-    {"bodyAsAttachment",         0, opt.body_as_attachment, NULL},
     {"inlinePGP",                0, opt.inline_pgp, NULL},
     {"autoresolve",              0, opt.autoresolve, NULL},
     {"replyCrypt",               0, opt.reply_crypt, NULL},
-    {"deprecationShown",         0, opt.deprecation_shown, NULL},
+    {"smimeHtmlWarnShown",       0, opt.smime_html_warn_shown, NULL},
     {NULL, 0, 0, NULL}
   };
   char buf[32];
diff --git a/src/mapihelp.cpp b/src/mapihelp.cpp
index a4774cb..6d2c04f 100644
--- a/src/mapihelp.cpp
+++ b/src/mapihelp.cpp
@@ -3330,17 +3330,6 @@ mapi_get_gpgol_body_attachment (LPMESSAGE message,
           found = 1;
           if (!r_body)
             ; /* Body content has not been requested. */
-          else if (opt.body_as_attachment && !mapi_test_attach_hidden (att))
-            {
-              /* The body is to be shown as an attachment. */
-              body = native_to_utf8 
-                (bodytype == 2
-                 ? ("[Open the attachment \"gpgol000.htm\""
-                    " to view the message.]")
-                 : ("[Open the attachment \"gpgol000.txt\""
-                    " to view the message.]"));
-              found = 1;
-            }
           else
             {
               char *charset;

-----------------------------------------------------------------------

Summary of changes:
 src/common_indep.h      |   8 +--
 src/mail.cpp            | 130 ++++++++++++++++++++++++++++++++++++++----------
 src/mail.h              |  11 ++++
 src/mailitem-events.cpp |  69 ++++++++++++++++++++-----
 src/main.c              |  50 ++-----------------
 src/mapihelp.cpp        |  11 ----
 src/windowmessages.cpp  |  27 ++++++++--
 src/windowmessages.h    |   9 +++-
 8 files changed, 207 insertions(+), 108 deletions(-)


hooks/post-receive
-- 
GnuPG extension for MS Outlook
http://git.gnupg.org




More information about the Gnupg-commits mailing list