[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