]> granicus.if.org Git - mutt/log
mutt
8 years agoUpdated French translation.
Vincent Lefevre [Mon, 11 Apr 2016 09:28:22 +0000 (11:28 +0200)]
Updated French translation.

8 years agoCheck for SSL_CTX_new returning NULL in ssl_sock_open(). (closes #3831)
Kevin McCarthy [Mon, 11 Apr 2016 02:10:17 +0000 (19:10 -0700)]
Check for SSL_CTX_new returning NULL in ssl_sock_open().  (closes #3831)

Thanks to Yuan Kang and the security researchers at Columbia
University and the University of Virginia for reporting the bug.

8 years agomerge stable
Kevin McCarthy [Mon, 11 Apr 2016 01:30:21 +0000 (18:30 -0700)]
merge stable

8 years agoFix mutt_protect() when INLINE is set. (closes #3828)
Kevin McCarthy [Sun, 10 Apr 2016 23:02:06 +0000 (16:02 -0700)]
Fix mutt_protect() when INLINE is set. (closes #3828)

The oppenc changes allow security bits to be set even when not
encrypting or signing (for instance, OPPENCRYPT and INLINE).

mutt_protect() assumed that if INLINE is set, then either ENCRYPT or
SIGN must also be set.  Specifically, it would end up inline-signing
the message even though neither was set.

Ensure mutt_protect() is a noop if neither SIGN or ENCRYPT are set.

In ci_send_message(), check for sign or encrypt before calling the
crypt_get_keys() / mutt_protect() block, and also in the fcc section
(since clear_content would be NULL if not).

The second change to the fcc part is somewhat redundant, but better to
be explicit and avoid the case where the subtype is somehow
"encrypted" or "signed" even though msg->security wasn't set thus.

8 years agoAdd error message string for imap_mailbox_rename() on root folder.
Kevin McCarthy [Sun, 10 Apr 2016 21:14:10 +0000 (14:14 -0700)]
Add error message string for imap_mailbox_rename() on root folder.

This was fixed just before 1.6.0, but due to the string freeze, could
not add an error message.

8 years agoFix potential memory leak in rfc2047_encode. (closes #3825)
Kevin McCarthy [Sat, 9 Apr 2016 01:38:27 +0000 (18:38 -0700)]
Fix potential memory leak in rfc2047_encode.  (closes #3825)

If convert_string() has nonreversible characters, the allocated output
buffer would be overwritten (and not freed) in rfc2047_encode().

Thanks to Richard Russon for the bug report and initial patch, and to
TAKAHASHI Tamotsu for the analysis and revised fix suggestion.

8 years agoFix pager.c format_line() to use size_t for mbrtowc() retvals.
Kevin McCarthy [Fri, 8 Apr 2016 22:27:17 +0000 (15:27 -0700)]
Fix pager.c format_line() to use size_t for mbrtowc() retvals.

While fixing up the error checking for mbrtowc(), I noticed the uses
in pager.c format_line() were assigning the retval to an int.

The cleanup for this was a little tricky, because it was making use of
possible negative values for (k1 - k).  The backspace detection loop
condition was a bit heavy, so this patch first pulled the
initialization and first call above, and put the second call inside
the loop.

Note that k1 previously included k, but this patch changes it to be
just the retval of mbrtowc.  This means the second mbrtowc() arguments
are changed to include k, as is the ch increment at the bottom of the
loop.

8 years agoReset mbstate for other mbrtowc() calls returning -1
Kevin McCarthy [Fri, 8 Apr 2016 22:20:53 +0000 (15:20 -0700)]
Reset mbstate for other mbrtowc() calls returning -1

Continue the cleanup started in changesets c8c76a6a1e61 and
a3450fd50d11.  In those changesets, a bug was occurring due to the
mbstate not being reset when mbrtowc() returned -1.

This patch fixes other callers of mbrtowc() to reset mbstate when it
returns -1.

8 years agomerge stable
Kevin McCarthy [Wed, 6 Apr 2016 16:58:06 +0000 (09:58 -0700)]
merge stable

8 years agoFix IDNA functions for systems without iconv.
Kevin McCarthy [Tue, 5 Apr 2016 21:31:36 +0000 (14:31 -0700)]
Fix IDNA functions for systems without iconv.

The IDNA changes for SMTPUTF8 support introduced a bug for systems
without iconv.  For those systems, the local<->intl functions would
return an error due to the charset conversion failing.

Change mutt_idna.c back to being conditionally compiled, but this time
based on HAVE_ICONV.  If there is no iconv, stub out the functions in
mutt_idna.h.

8 years agomerge default into stable
Kevin McCarthy [Sat, 2 Apr 2016 20:04:04 +0000 (13:04 -0700)]
merge default into stable

8 years agomutt-1.6.0 signed
Kevin McCarthy [Sat, 2 Apr 2016 18:55:45 +0000 (11:55 -0700)]
mutt-1.6.0 signed

8 years agoAdded tag mutt-1-6-rel for changeset be82a2fde82f
Kevin McCarthy [Sat, 2 Apr 2016 18:18:54 +0000 (11:18 -0700)]
Added tag mutt-1-6-rel for changeset be82a2fde82f

8 years agoautomatic post-release commit for mutt-1.6.0 mutt-1-6-rel
Kevin McCarthy [Sat, 2 Apr 2016 18:18:27 +0000 (11:18 -0700)]
automatic post-release commit for mutt-1.6.0

8 years agoFix hcversion.h generation error when using included gettext.
Kevin McCarthy [Fri, 1 Apr 2016 16:38:47 +0000 (09:38 -0700)]
Fix hcversion.h generation error when using included gettext.

When configuring mutt with --enable-hcache and
--with-included-gettext, there is an automake ordering issue:
BUILT_SOURCES are processed before SUBDIRS.  Therefore, the
'hcversion.h' target is run before the included gettext (intl) is
built.

The hcversion.h target runs the cpp over config.h and mutt.h,
but mutt.h includes lib.h which tries to #include <libintl.h>.
Unfortunately, libintl.h (in this configuration) is generated by the
intl subdir build and so doesn't exist yet.

While the build doesn't completely fail, the resulting hcversion.h is
incorrect: it's just the md5sum of the initial value of BASEVERSION.

This fix is somewhat of a hack but is cleaner than trying to change
automake's behavior.  It inserts a '#undef ENABLE_NLS' in between the
config.h and mutt.h sent to the cpp.  Since hcachever.sh is just
scanning the data structures used by mutt, this shouldn't affect the
hash generated.

Thanks to Will Yardley for reporting this issue.

8 years agoFilter out bidi marks in rfc2047 and rfc2231 encoding. (see #3827)
Kevin McCarthy [Wed, 30 Mar 2016 20:16:20 +0000 (13:16 -0700)]
Filter out bidi marks in rfc2047 and rfc2231 encoding. (see #3827)

Filter out U+200F RIGHT-TO-LEFT MARK and U+200E LEFT-TO-RIGHT MARK in
rfc2047 and 2231 encoded fields.  GNU Screen has a bug that corrupts
the display, and can cause the wrong email to appear to be selected in
the index.  Until screen fixes the issue, filter it out in mutt.

8 years agoFix documentation: mime_lookup (not mime-lookup).
Kevin McCarthy [Tue, 29 Mar 2016 21:07:51 +0000 (14:07 -0700)]
Fix documentation: mime_lookup (not mime-lookup).

8 years agoFix typo.
Vincent Lefevre [Tue, 29 Mar 2016 13:06:52 +0000 (15:06 +0200)]
Fix typo.

8 years agoFix error handling in sync_helper() and imap_sync_mailbox(). (closes #3817)
Kevin McCarthy [Sat, 26 Mar 2016 22:45:18 +0000 (15:45 -0700)]
Fix error handling in sync_helper() and imap_sync_mailbox(). (closes #3817)

This patch is based on the one Richard Russon found in the Fedora package.

If an error occurs during one of the imap_exec() calls in
imap_sync_mailbox(), the mailbox could end up being closed.  This
would cause idata->ctx to be NULL.  Add a check in sync_helper() for
the case where idata->ctx == NULL.

In imap_sync_mailbox(), check the return value of sync_helper().  To
keep the code simple, change rc from being the sum of the calls to the
bitwise-OR of the calls.  (We only need to know if a single flag needs
to be updated, and bitwise-OR will detect negatives.)

Below the calls to sync_helper(), if the call to imap_exec() fails,
make sure rc is set to -1.

8 years agoUpdated Japanese translation.
TAKAHASHI Tamotsu [Sat, 26 Mar 2016 20:30:16 +0000 (13:30 -0700)]
Updated Japanese translation.

8 years agoUpdated Esperanto translation.
Benno Schulenberg [Thu, 24 Mar 2016 19:07:38 +0000 (12:07 -0700)]
Updated Esperanto translation.

8 years agoPrevent renaming root folder in imap.
Kevin McCarthy [Wed, 23 Mar 2016 22:28:25 +0000 (15:28 -0700)]
Prevent renaming root folder in imap.

The root folder results in mx.mbox being NULL, which causes a
segfault.  This can be triggered by entering a subfolder and trying to
rename the ".." entry.

Due to the translation string freeze, no visible error message is
displayed.  Add a TODO note about this for post-1.6 release.

8 years agoFix uninitialized prompt buffer in imap_mailbox_rename(). (closes #3819)
Kevin McCarthy [Wed, 23 Mar 2016 21:20:43 +0000 (14:20 -0700)]
Fix uninitialized prompt buffer in imap_mailbox_rename(). (closes #3819)

This is a patch from OpenBSD to initialize the newname buffer in
imap_mailbox_rename().  Previously it would generate random garbage in
the prompt.

This version of the patch initializes the prompt to the old mailbox name.

Thanks to TAKAHASHI Tamotsu for finding this patch.

8 years agoAdd "-d" command-line option to manual. (closes #3816)
Kevin McCarthy [Wed, 23 Mar 2016 20:17:55 +0000 (13:17 -0700)]
Add "-d" command-line option to manual. (closes #3816)

Thanks to Richard Russon for finding this patch in the Fedora package.

8 years agoUpdated Catalan translation.
Ivan Vilata i Balaguer [Wed, 23 Mar 2016 20:06:15 +0000 (13:06 -0700)]
Updated Catalan translation.

8 years agoClean up mutt_wstr_trunc() some more.
Kevin McCarthy [Wed, 23 Mar 2016 01:00:13 +0000 (18:00 -0700)]
Clean up mutt_wstr_trunc() some more.

* Change return type to size_t.
  The return value is the cumulation of values from mbrtowc(), which
  returns size_t.  All callers already assign the return value to a
  size_t, requiring no external changes.

* Change the local variables n, w, l, and cl to size_t.
  n is the strlen of the src parameter.  l and cl are used for the
  return value.  w is assigned to the *width parameter, which is
  size_t.

  cw is kept as an int, because wcwidth returns type int.

* Change error handling of mbrtowc to be the same as other functions
  in mutt: only reset mbstate when the retval==-1.  When retvat==-2,
  set cl=n to break out of the loop.  Also, set wc to replacement_char
  and allow the logic below to determine the width instead of
  hardcoding to 1.

8 years agoImprove error handling in mutt_wstr_trunc().
Karel Zak [Mon, 21 Mar 2016 00:06:16 +0000 (17:06 -0700)]
Improve error handling in mutt_wstr_trunc().

This is Karel Zak's patch to fix handling of (illegal) multi-byte chars.

 * mutt_wstr_trunc():
 Reset mbstate after error in mbrtowc().
 Set wc=0 if wcwidth returns < 0.

Addresses: https://github.com/karelzak/mutt-kz/issues/58

Thanks to Richard Russon for bringing this patch to our attention.

8 years agoUpdated Dutch translation.
Benno Schulenberg [Tue, 22 Mar 2016 19:35:54 +0000 (12:35 -0700)]
Updated Dutch translation.

8 years agoUpdated French translation.
Vincent Lefevre [Mon, 21 Mar 2016 00:31:06 +0000 (01:31 +0100)]
Updated French translation.

8 years agoUpdated Russian translation.
Vsevolod Volkov [Sun, 20 Mar 2016 22:38:38 +0000 (15:38 -0700)]
Updated Russian translation.

8 years agoUpdated Ukrainian translation.
Vsevolod Volkov [Sun, 20 Mar 2016 22:36:34 +0000 (15:36 -0700)]
Updated Ukrainian translation.

8 years agoUpdated Danish translation.
Morten Bo Johansen [Sun, 20 Mar 2016 22:30:06 +0000 (15:30 -0700)]
Updated Danish translation.

8 years agoTurn off asserts in sendlib.c.
Kevin McCarthy [Sun, 20 Mar 2016 00:25:10 +0000 (17:25 -0700)]
Turn off asserts in sendlib.c.

The Doctor reported triggering an assertion in convert_file_to(), due
to an unexpected errno from iconv().  According to the comments, the
assertions were only enabled for debugging and should have been turned
off.  We certainly don't want to abort mutt for this case, so just
disable them as the comment indicates.

8 years agoUpdated Czech translation.
Petr Pisar [Sat, 19 Mar 2016 23:19:41 +0000 (16:19 -0700)]
Updated Czech translation.

8 years agoFix a few typos in translation messages.
Kevin McCarthy [Sat, 19 Mar 2016 13:08:08 +0000 (06:08 -0700)]
Fix a few typos in translation messages.

Thanks to Moritz Barsnick for reporting these.

8 years agoUpdated French translation.
Vincent Lefevre [Fri, 18 Mar 2016 11:12:05 +0000 (12:12 +0100)]
Updated French translation.

8 years agoFix typo in debug message.
Vincent Lefevre [Fri, 18 Mar 2016 09:15:16 +0000 (10:15 +0100)]
Fix typo in debug message.

8 years agoFix typo picked up by Debian's QA.
Richard Russon [Fri, 18 Mar 2016 00:33:09 +0000 (17:33 -0700)]
Fix typo picked up by Debian's QA.

This was allegedly fixed 5 years ago (see #3493).

8 years agoUse '$(PACKAGE).pot' instead of 'mutt.pot' in Makefile.am
Richard Russon [Fri, 18 Mar 2016 00:22:12 +0000 (17:22 -0700)]
Use '$(PACKAGE).pot' instead of 'mutt.pot' in Makefile.am

8 years agoFix three build warnings when DEBUG isn't defined.
Richard Russon [Fri, 18 Mar 2016 00:12:10 +0000 (17:12 -0700)]
Fix three build warnings when DEBUG isn't defined.

8 years agoFix tcbdb error reporting to use ecode, not errno.
Kevin McCarthy [Wed, 16 Mar 2016 21:15:14 +0000 (14:15 -0700)]
Fix tcbdb error reporting to use ecode, not errno.

After committing aff8d62ebddb and taking a closer look at the tcbdb
documentation, I realized those functions don't set errno.

Change the error handling messages to instead get the ecode and
message using tcbdbecode() and tcbdberrmsg().

8 years agoFix crash in hcache_open_tc() when open fails and debug is on. (closes #3813)
Kevin McCarthy [Wed, 16 Mar 2016 20:33:55 +0000 (13:33 -0700)]
Fix crash in hcache_open_tc() when open fails and debug is on. (closes #3813)

When the hcache open fails, it was trying to dprint.  The dprint had a
%s where it was passing errno, leading to a crash in strlen.

Unify the dprint messages for tcdbopen and tcdbclose to report the
path, strerror, and errno.

Thanks to Will Yardley for capturing the stack trace!

8 years agoPrevent ctx->fp from being closed twice in the event of an error.
Kevin McCarthy [Wed, 16 Mar 2016 01:04:26 +0000 (18:04 -0700)]
Prevent ctx->fp from being closed twice in the event of an error.

The previous patch from Vincent exposed a crash if ftruncate() fails
in mbox_sync_mailbox().  Change fclose() to safe_fclose(), to avoid it
being called twice.

8 years agoCheck return value of ftruncate() in mbox_sync_mailbox().
Vincent Lefevre [Wed, 16 Mar 2016 01:01:44 +0000 (18:01 -0700)]
Check return value of ftruncate() in mbox_sync_mailbox().

Generate an error in the event that ftruncate() fails.

8 years agoUpdate the $hostname documentation.
Kevin McCarthy [Mon, 14 Mar 2016 02:04:12 +0000 (19:04 -0700)]
Update the $hostname documentation.

Change to reflect the updates in changeset ce71d168c819.

8 years agoUpdate the UPDATING file for 1.6.0
Kevin McCarthy [Mon, 14 Mar 2016 01:18:28 +0000 (18:18 -0700)]
Update the UPDATING file for 1.6.0

8 years agoFix RFC2231 continuation join order. (closes #3811) (closes #3741)
Kevin McCarthy [Sun, 13 Mar 2016 18:19:47 +0000 (11:19 -0700)]
Fix RFC2231 continuation join order.  (closes #3811) (closes #3741)

The function generating a list of parts to join had incorrect sorting
logic.  It was comparing values, not attributes.  Additionally, the
order logic wasn't correct.

Thanks to TAKAHASHI Tamotsu for pointing out the value vs attribute
comparison bug.

8 years agoUpdated French translation.
Vincent Lefevre [Fri, 11 Mar 2016 12:47:29 +0000 (13:47 +0100)]
Updated French translation.

8 years agoImprove the mailto_allow documentation.
Kevin McCarthy [Thu, 10 Mar 2016 23:52:14 +0000 (15:52 -0800)]
Improve the mailto_allow documentation.

Add to the commands list.  Document unmailto_allow.  Mention the new
behavior in the Security Considerations section about mailto: links.

8 years agoRestrict mailto header fields using mailto_allow.
Michael Elkins [Thu, 10 Mar 2016 22:59:24 +0000 (14:59 -0800)]
Restrict mailto header fields using mailto_allow.

By default, only the body and subject fields are allowed.  These can
be changed with the mailto_allow and unmailto_allow commands.

8 years agoCheck stat return value in configure.ac. (closes #3810)
Kevin McCarthy [Thu, 10 Mar 2016 22:20:57 +0000 (14:20 -0800)]
Check stat return value in configure.ac. (closes #3810)

8 years agoAdd $resume_edited_draft_files option.
Kevin McCarthy [Tue, 8 Mar 2016 23:57:55 +0000 (15:57 -0800)]
Add $resume_edited_draft_files option.

This adds an extra header when saving edited draft files (-E -H on the
command line).  With this header, the next time they are edited, they
are automatically "resumed" (by setting $resume_draft_files).

The idea is to prevent multiple user-defined headers and signatures
from being added to the draft message by avoiding processing it as a
brand new message after the first time.

8 years agoAdd $resume_draft_files option.
Kevin McCarthy [Tue, 8 Mar 2016 23:57:50 +0000 (15:57 -0800)]
Add $resume_draft_files option.

When set, draft files are processed the same as when resuming
postponed messages.  One use of this option is to avoid multiple
user-defined headers and signatures being added to the message.
(e.g. when -E is used repeatedly on the draft files).

8 years agoImprove method of determining FQDN. (closes #3298)
Derek Martin [Tue, 8 Mar 2016 21:12:02 +0000 (13:12 -0800)]
Improve method of determining FQDN. (closes #3298)

Rather than reading /etc/resolv.conf, use gethostname() and
getaddrinfo() to get the canonical domain.

Thanks to Vincent Lefèvre for the memory leak fix.

8 years agoDocument that GPGME doesn't support creating inline PGP messages.
Kevin McCarthy [Wed, 2 Mar 2016 23:08:54 +0000 (15:08 -0800)]
Document that GPGME doesn't support creating inline PGP messages.

8 years agoAdd hard redraw for the gpgme application/pgp handler.
Kevin McCarthy [Wed, 2 Mar 2016 23:08:49 +0000 (15:08 -0800)]
Add hard redraw for the gpgme application/pgp handler.

Will Yardley reported display artifacts and keyboard issues after
decrypting a traditional pgp message using gpgme.  It turns out the
gpgpme code path was missing a hard_redraw() to repaint the screen
after pinentry.

8 years agoDraft file tweeks: rename flag, don't auto-abort on no change.
Kevin McCarthy [Mon, 29 Feb 2016 03:42:40 +0000 (19:42 -0800)]
Draft file tweeks: rename flag, don't auto-abort on no change.

Rename the flag to SENDDRAFTFILE since it will be used in contexts
other than the body allocation.

Don't automatically abort if the message was unchanged; it seems
possible the draft files could be used as the entire message reply.

8 years agoAdd $pgp_decryption_okay to verify multipart/encrypted are actually encrypted. (close...
Kevin McCarthy [Tue, 16 Feb 2016 03:44:23 +0000 (19:44 -0800)]
Add $pgp_decryption_okay to verify multipart/encrypted are actually encrypted. (closes #3770)

In pgp classic mode, if the $pgp_decrypt_command generated output, it
assumed the content was encrypted.  However, gpg will generate output
even if the block is simply signed and armored text.  The problem is
that mutt was then printing mime headers labelling the output as
encrypted text in the ui.

Add a new option, and suggested value of:
  set pgp_decryption_okay="^\\[GNUPG:\\] DECRYPTION_OKAY"
If set, the output from the decrypt command will be scanned for this
regexp to confirm an actual decryption occurred.

Note that gpgme already correctly rejects this form of spoofed message.

8 years agoUpdate the status message after decryption using gpgpme.
Kevin McCarthy [Thu, 11 Feb 2016 23:12:48 +0000 (15:12 -0800)]
Update the status message after decryption using gpgpme.

Change gpgme to behave the same as classic pgp mode: after a
decryption, update the status message to overwrite the initial
"Invoking PGP..." message.

8 years agoUpdated French translation.
Vincent Lefevre [Thu, 11 Feb 2016 01:15:27 +0000 (02:15 +0100)]
Updated French translation.

8 years agoFix pgp and smime decryption in mutt_prepare_template().
Kevin McCarthy [Sun, 7 Feb 2016 18:15:27 +0000 (10:15 -0800)]
Fix pgp and smime decryption in mutt_prepare_template().

Change the "combined" multipart decryption block to only work for pgp,
since mutt_is_multipart_encrypted() currently only checks for pgp
headers and it therefore only worked for pgp in the first place.

Fix the newhdr->security to be based on what that function returns,
instead of the "context" hdr passed in.

Add a smime decryption block below when iterating through the content.

Fix the application/pgp decryption block to assign to hdr->security
using the type of the app/pgp part instead of hdr->content.

8 years agoAdd new flag -E to modify draft/include file. (closes #3799)
Kevin McCarthy [Sun, 7 Feb 2016 18:15:22 +0000 (10:15 -0800)]
Add new flag -E to modify draft/include file. (closes #3799)

Specifying -E with -i will cause mutt to directly edit the include
file.

Specifying -E with -H will cause the draft file to be regenerated from
the latest version of the email on exit.

Improve -H so that it will read (and write) multipart messages.

8 years agoMention <what-key> under the key bindings documentation.
Kevin McCarthy [Tue, 26 Jan 2016 21:46:22 +0000 (13:46 -0800)]
Mention <what-key> under the key bindings documentation.

8 years agoIncrease HUGE_STRING size to 8192. (see #3804)
Kevin McCarthy [Sat, 23 Jan 2016 20:30:16 +0000 (12:30 -0800)]
Increase HUGE_STRING size to 8192. (see #3804)

The interface for editing a large number of recipients is poor and
perhaps shouldn't be using a fixed buffer size.  Until a redesign can
be thought about, this will help.

8 years agoMake sasl authentication buffers dynamically sized. (see #3804)
Kevin McCarthy [Tue, 19 Jan 2016 22:05:52 +0000 (14:05 -0800)]
Make sasl authentication buffers dynamically sized. (see #3804)

The reporter found that the current buffer of HUGE_STRING was
insufficient in his case to encode the clientout response back to the
server in imap_auth_sasl().

Since sasl gives us the size of "clientout", we can dynamically malloc
and resize the buffer as needed.  This patch uses max(LONG_STRING,
(clientoutlen*2)).  This is sufficient to hold the base64 encoded
value plus additional prefix/suffix needed in each protocol.

The size is rechecked after each sasl_client_step() and resized as
needed.

Similar code is in pop_auth_sasl() and smtp_auth_sasl(), so convert
all three to use a dynamic buffer.

8 years agoAllow tab as a delimiter in smime .index files. (closes #3802)
Kevin McCarthy [Wed, 6 Jan 2016 02:08:07 +0000 (18:08 -0800)]
Allow tab as a delimiter in smime .index files. (closes #3802)

The old parsing code used fscanf, and so happened to allow a tab as a
delimiter.  Even though smime_keys.pl uses a space, some users
maintain their own .index files by hand (using tab delimiters), so
continue to allow that delimiter.

Thanks to Andre for the bug report and patch.

8 years agoAdd a couple missing ATTACHPTR->tree frees.
Kevin McCarthy [Tue, 5 Jan 2016 00:28:56 +0000 (16:28 -0800)]
Add a couple missing ATTACHPTR->tree frees.

While working on ticket 3800, I noticed the tree wasn't being freed
inside OP_COMPOSE_EDIT_HEADERS.  Add a free there, and in the cleanup
at the end of mutt_compose_menu().

A few other sections in mutt_compose_menu() are performing a
free-on-error where the tree isn't allocated yet, so skip it for
those.

I believe this is actually not fixing a memory leak: all attachments
are always at level 0 in the compose menu (as far as I know); so
nothing is ever allocated in the tree pointer.  However since other
parts of the code in compose.c clean this up, it make sense to add
them here too.

8 years agoPrefer bright versions (8-15) of colors for brightXXX backgrounds.
S. Gilles [Mon, 4 Jan 2016 21:57:40 +0000 (13:57 -0800)]
Prefer bright versions (8-15) of colors for brightXXX backgrounds.

When a bright color is specified as a background, try to use the
bright version of that color, falling back to the A_BLINK method only
on terms which do not support enough colors.

8 years agoUse strrchr to search for Received date separator. (closes #3798)
Kevin McCarthy [Fri, 1 Jan 2016 20:24:53 +0000 (12:24 -0800)]
Use strrchr to search for Received date separator. (closes #3798)

Sample email provided by the submitter showed a Received header with a
";" at the end of each line, instead of a single ";" in front of the
date.  The emails are obviously not RFC compliant, but the fix is
simple enough: find the last ";" using strrchr instead of the first.

8 years agoUpdate manual copyright too.
Kevin McCarthy [Fri, 1 Jan 2016 20:16:27 +0000 (12:16 -0800)]
Update manual copyright too.

8 years agoConvert copyright years to all use 4 digit years.
Kevin McCarthy [Fri, 1 Jan 2016 20:07:46 +0000 (12:07 -0800)]
Convert copyright years to all use 4 digit years.

Vincent Lefèvre pointed out the common shortcut, e.g 1996-9, is
actually not allowed for copyright years.  Convert all the copyright
years (for mutt files) to use 4 digits.

8 years agoUpdate copyright notices.
Kevin McCarthy [Fri, 1 Jan 2016 20:07:40 +0000 (12:07 -0800)]
Update copyright notices.

This patch only updates existing copyright notices in the source
files, using commit dates since the last copyright update in commits
e3af935cdb1a and f8fd60d8d3f2.

Add a notice to the COPYRIGHT file to refer to our mercurial
repository for the full commit history.

Add myself to the COPYRIGHT file and smime_keys.pl file.

8 years agomerge stable
Kevin McCarthy [Fri, 1 Jan 2016 17:52:33 +0000 (09:52 -0800)]
merge stable

8 years agoFix segfault when deleting and reusing attachment slots. (closes #3800)
Kevin McCarthy [Fri, 1 Jan 2016 17:48:51 +0000 (09:48 -0800)]
Fix segfault when deleting and reusing attachment slots. (closes #3800)

When attachments are deleted, delete_attachment() slides the entries
down in the idx array, but forgets to NULL out the last vacated slot.

If more attachments are added later on via OP_COMPOSE_EDIT_HEADERS and
the Attach: pseudo-header, mutt_gen_attach_list() will attempt to
re-use the ATTACHPTR in that last slot because it wasn't set to NULL.
This will be pointing to freed memory and likely segfault (at best).

9 years agoAdd missing "yes" to $recall option documentation.
Kevin McCarthy [Thu, 17 Dec 2015 20:25:00 +0000 (12:25 -0800)]
Add missing "yes" to $recall option documentation.

Also add a blurb about the <recall-message> function.

9 years agoReword new f=f documentation.
Kevin McCarthy [Thu, 17 Dec 2015 15:37:10 +0000 (07:37 -0800)]
Reword new f=f documentation.

Reword a couple parts, as Oswald Buddenhagen suggested the original
wording was somewhat confusing.

9 years agoAdd $reflow_space_quotes option. (closes #3309)
Kevin McCarthy [Tue, 15 Dec 2015 23:29:56 +0000 (15:29 -0800)]
Add $reflow_space_quotes option. (closes #3309)

When viewing and replying to a flowed email, add spacing between the
quotes to improve readability and interoperability with non-flowed
replies.

Add a section to the documentation discussing support for viewing and
non-flowed replies to flowed emails.

9 years agomerge stable
Kevin McCarthy [Tue, 8 Dec 2015 17:12:09 +0000 (09:12 -0800)]
merge stable

9 years agoFix hash table key "use after free" in mh_check_mailbox(). (closes #3797)
Kevin McCarthy [Tue, 8 Dec 2015 17:11:30 +0000 (09:11 -0800)]
Fix hash table key "use after free" in mh_check_mailbox(). (closes #3797)

The fnames hash uses the maildir->header->path as the key.  As matches
are found, the headers are freed.  This inadvertantly also freed the key
to the hashtable entry; the next hash_find() going to the same bucket
might end up comparing keys with a freed string.

This patch stores the path in the struct maildir canon_fname field (just
as maildir_check_mailbox() does) and uses that as the hash key instead.
This field isn't used outside of maildir_check_mailbox(), and is
automatically freed for us in the maildir_move_to_context() call at the
bottom of both functions.

Note there are other ways to fix this problem:
- Add a new mode to the hash table, causing it to strdup the keys and
  free them itself.
- Delete the entries in the fnames hash, rather leaving them there.
The first seems the cleanest, but would end up touching much more code.
The second is also clean, but might have a negative performance impact.

Additionally, peeking back in history to changeset 1d45a50b6f9b, it
looks like the canon_fname used to be used by mh too, so perhaps
removing the strdup may have been a mistake during refactoring at some
point.

9 years agoUpdated French translation.
Vincent Lefevre [Mon, 7 Dec 2015 11:22:46 +0000 (12:22 +0100)]
Updated French translation.

9 years agoProvide a better prompt and error for inline PGP with attachments. (closes #3738)
Kevin McCarthy [Thu, 3 Dec 2015 23:23:34 +0000 (15:23 -0800)]
Provide a better prompt and error for inline PGP with attachments.  (closes #3738)

Change mutt_protect() to check for text/plain before trying to invoke
crypt_pgp_traditional_encryptsign().  This way, mutt can provide a bit
more specific prompt and error message.

Since pgp_mime_auto says it will prompt in the event of any failure,
keep the more generic prompt after the encryptsign call too.

9 years agoLoosen mutt_signed_handler() protocol value consistency check. (closes #3639)
Kevin McCarthy [Wed, 2 Dec 2015 02:20:27 +0000 (18:20 -0800)]
Loosen mutt_signed_handler() protocol value consistency check.  (closes #3639)

Apparently, for S/MIME, some MUAs mismatch the protocol value of
the multipart/signed and the content-type of the signature: putting
"pkcs7-signature" in one and "x-pkcs7-signature" in the other.

Change mutt_signed_handler() to independently verify the values of the
protocol and the content-type.  This still checks for correct values but
doesn't ensure they match between the two (for S/MIME).

9 years agosmime: allow signing message digest algorithm to be specified.
Kevin McCarthy [Mon, 30 Nov 2015 23:52:30 +0000 (15:52 -0800)]
smime: allow signing message digest algorithm to be specified.

Currently, Mutt hardcodes micalg=sha1 for signed messages.
Unfortunately, the actual message digest algorithm used defaults to
the value in the "Signature Algorithm" field in the signing key's
certificate.

Add a new configuration option $smime_sign_digest_alg, defaulting
to sha256.  Add a new printf format string, %d, to be used in the
signing command to specify the digest algorithm.  Modify the sample
$smime_sign_command to include "-md %d".

Note: This solution requires using the modified $smime_sign_command,
or else the micalg parameter again may not match the algorithm used.
An alternative solution would be to query the certificate "Signature
Algorithm" field and try to change the micalg to match it, but this
method is easier to implement and provides better control for the user
to configure, in any case.

9 years agoClean up address_uses_unicode() (closes #3794)
Kevin McCarthy [Thu, 26 Nov 2015 19:01:19 +0000 (11:01 -0800)]
Clean up address_uses_unicode() (closes #3794)

Pull the null check out of the loop.  Use a bit comparison to detect if
the high bit is set: this avoids a warning for platforms where char is
implicitly signed (where comparing < 128 is always true).

9 years agoFix bad idn error on local mailboxes. (closes #3795)
Kevin McCarthy [Wed, 25 Nov 2015 05:45:58 +0000 (21:45 -0800)]
Fix bad idn error on local mailboxes.  (closes #3795)

Commit 831abf39d53a pulled the mbox_to_udomain() call inside the
conversion functions.  Unfortunately, this causes local (user only)
mailboxes to be considered conversion errors instead of just skipping
them.

Revert mbox_to_udomain() back to using a static buffer and pull back
into the mutt_addrlist_to_local/intl() functions.

Pass the user and domain into the conversion functions instead of the address.

9 years agoAdd user reversibility check in intl_to_local.
Kevin McCarthy [Tue, 24 Nov 2015 23:49:31 +0000 (15:49 -0800)]
Add user reversibility check in intl_to_local.

This ensures we don't lose information by converting to the local charset.

9 years agoImplement SMTPUTF8 capability support in smtp.c
Kevin McCarthy [Tue, 24 Nov 2015 23:49:29 +0000 (15:49 -0800)]
Implement SMTPUTF8 capability support in smtp.c

This is patch 4 of 4 implementing support for SMTPUTF8 (RFC 6531).

RFC6532 support already worked: rfc822*.c already parsed messages in
exactly the way RFC6532 wants.

Thanks for Arnt Gulbrandsen for the original patch.

9 years agoAdd option 'idn_encode'; rename option 'use_idn' to 'idn_decode'.
Kevin McCarthy [Tue, 24 Nov 2015 23:49:28 +0000 (15:49 -0800)]
Add option 'idn_encode'; rename option 'use_idn' to 'idn_decode'.

This is patch 3 of 4 implementing support for SMTPUTF8 (RFC 6531).

Add an option to control whether international domains are encoded with
IDN or not.  This defaults to set, for backward compatibility.

Rename the use_idn option to idn_decode, since that more properly
reflects its purpose.

9 years agoRewrite address local-to-intl conversion functions.
Kevin McCarthy [Tue, 24 Nov 2015 23:49:27 +0000 (15:49 -0800)]
Rewrite address local-to-intl conversion functions.

This is patch 2 of 4 implementing support for SMTPUTF8 (RFC 6531).

Perform charset conversion from local to UTF-8 for both the user and
domain parts of the address.

If IDN is enabled and the options (added in the next patch) are turned
on, encode/decode the domain part.

Use the intl_checked and is_intl status bits to record the intl/local
status of the ADDRESS mailbox part.

9 years agoRename idna functions and bits for smtputf8 changes.
Kevin McCarthy [Tue, 24 Nov 2015 23:49:26 +0000 (15:49 -0800)]
Rename idna functions and bits for smtputf8 changes.

This is patch 1 of 4 implementing support for SMTPUTF8 (RFC 6531).

Change mutt_idna.c to be always compiled.  Remove the stub functions in
mutt_idna.h.  Instead, put #ifdefs around the idna function calls.  The
conversion functions will be fixed up in the next patch.

Rename the conversion functions to mutt_addrlist_to_intl() and
mutt_env_to_intl().  Rename the ADDRESS idna status bits to "intl"
status bits.

9 years agoRemove redundant mbox delimiter check in imap_browse(). (closes #3646)
Kevin McCarthy [Sat, 21 Nov 2015 23:28:57 +0000 (15:28 -0800)]
Remove redundant mbox delimiter check in imap_browse().  (closes #3646)

imap_fix_path() removes duplicate and trailing delimiters, so the check
below it was redundant.  This also made it appear list.delim could be
used uninitialized.

Remove the check, but add a check to make sure the "fixed" path has
len>0, to prevent oob accesses of mbox[n-1] below.

Lastly, remove a redundant n=strlen(mbox) inside the initial LIST
processing loop.  The mbox isn't changed from above, so there is no
need to rerun strlen.

9 years agoFix memcpy buf=NULL/len=0 issue in replace_part(). (closes #3790)
Kevin McCarthy [Thu, 19 Nov 2015 00:14:39 +0000 (16:14 -0800)]
Fix memcpy buf=NULL/len=0 issue in replace_part(). (closes #3790)

Calling memcpy with src or dest=NULL is technically illegal, even if
len=0.  Recent compilers seem to now be generating warnings/errors with
this.

replace_part() is currently the only place we are getting bug reports,
so for now just fix the problem in this one place.

9 years agoImprove error messages for eat_date() and eat_regexp().
Kevin McCarthy [Tue, 10 Nov 2015 02:53:05 +0000 (18:53 -0800)]
Improve error messages for eat_date() and eat_regexp().

After calling mutt_extract_token(), s->dptr will typically be at the end
of the string if an error occurred.  Save a pointer to the beginning of
the expression, so it can be properly displayed in the error message.

Convert eat_date() and eat_regexp() to use the same iconv strings for
the error message.

9 years agoFix possible unintentional '\0' strchr matches.
Kevin McCarthy [Mon, 9 Nov 2015 23:40:42 +0000 (15:40 -0800)]
Fix possible unintentional '\0' strchr matches.

After fixing the ticket 3787 strchr issue, this patch cleans up other
potentially incorrect uses of strchr for the '\0' case.

In mutt_multi_choice(), mutt_getch() can technically return 0.  Although
it seems the user would have to try quite hard to do this, it's
incorrect to return that index into letters.  Change "ch.ch==0" to be
considered the same as an abort.

is_email_wsp() is used in a couple places where it wasn't obvious
whether '\0' was being accounted for, so add an explicit check to the
function.

Inside eat_date(), if mutt_extract_token() had no input and returned
"", the strchr ("<>=", buffer.data[0]) below would return a pointer.
In actuality, this is prevented by an empty parameter check inside
mutt_pattern_comp(), but it doesn't hurt to make it the same as
eat_regexp() and have the check explicitly done here too.

rfc2047_encode() was another borderline case for adding a check.  The
convert_string() sets a length, so it seems highly unlikely that *t
could be 0, but doesn't hurt to add the check.

The find_encoded_word() fix looks necessary.  If the passed in s was
something like "=?charset?" (followed by EOS, '\0'), the strchr("BbQq",
q[1]) would in fact return a pointer and the following q[2] would read
past the end of string.  If q[2] happened to be '?', it might even
continue reading in the for loop below.

Lastly, in parse_mailboxdomain(), the potential overread was already
fixed in changeset:a6919571eb59, but although the nonspecial and special
strchr() line happens to "work" for the case of '\0', it's pretty
fragile to leave as is.  It's better to be explicit and just return if
we hit EOS without calling next_token().

9 years agoUpdated French translation.
Vincent Lefevre [Tue, 20 Oct 2015 15:59:07 +0000 (17:59 +0200)]
Updated French translation.

9 years agomerge stable
Kevin McCarthy [Sun, 18 Oct 2015 12:05:37 +0000 (20:05 +0800)]
merge stable

9 years agoFix next_token() oob read. (closes #3787)
Kevin McCarthy [Sun, 18 Oct 2015 11:45:51 +0000 (19:45 +0800)]
Fix next_token() oob read.  (closes #3787)

With specially crafted input to 'mutt -H', the line "Return-Path:<() "
is read and passed to mutt_parse_rfc822_line(). "<() " is then passed
through to rfc822_parse_adrlist().

Eventually, inside next_token(), is_special(*s) is called when s
points to the end of the string ('\0').  This macro calls strchr,
which will actually match and return a pointer to the trailing '\0' in
RFC822Specials!  This causes "s + 1" to be returned, skipping past the
end of string inside parse_mailboxdomain().

This patch adds a check to make sure *s is non-null before calling
is_special(*s).

9 years agoFix error message for attach-message. (closes #3785)
Kevin McCarthy [Sat, 17 Oct 2015 03:15:01 +0000 (11:15 +0800)]
Fix error message for attach-message. (closes #3785)

Currently if mx_open_mailbox() fails when trying to attach a message,
mutt_perror() is called.  Change this to call mutt_error() instead,
since errno isn't set for all failure cases.

9 years agoUpdated French translation.
Vincent Lefevre [Thu, 8 Oct 2015 11:17:03 +0000 (13:17 +0200)]
Updated French translation.

9 years agoCreate a separate macro/push/exec event buffer. (closes #3779)
Kevin McCarthy [Sun, 4 Oct 2015 02:08:49 +0000 (10:08 +0800)]
Create a separate macro/push/exec event buffer.  (closes #3779)

Currently, the SSL and TLS certficate prompts turn on
OPTUNBUFFEREDINPUT, (to prevent macros and such from running right
through the dialog).  Unfortunately, the menu dialog processing in
menu_dialog_dokey() is using mutt_ungetch() to forward non-dialog keys
on to standard menu processing.  With OPTUNBUFFEREDINPUT set, those keys
never make it to the menu and are buffered until after the menu dialog.

This patch creates a new event buffer, separate from the standard
"unget" buffer, for use by macros, exec, and push events.  These events
can be temporarily ignored by setting OPTIGNOREMACROEVENTS (renamed
from OPTUNBUFFEREDINPUT), while continuing to allow unget events to be
processed.

Since the "push" and "unget" functions now go to different buffers,
function names were slightly renamed, to make it less easy to
unintentionally use the wrong function at the wrong time.