]> granicus.if.org Git - mutt/log
mutt
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.

9 years agoFix menu type in certificate prompt. (see #3779)
Kevin McCarthy [Sun, 4 Oct 2015 02:08:45 +0000 (10:08 +0800)]
Fix menu type in certificate prompt.  (see #3779)

The menu type is used in several places as a direct index into
Keymaps[], so passing in -1 to mutt_new_menu() was leading to illegal
memory accesses later on.

Add a range check in mutt_new_menu(), defaulting to MENU_GENERIC, to
prevent this problem in the future.

9 years agoImprove prompt when switching between PGP and S/MIME. (closes #3777)
Kevin McCarthy [Thu, 1 Oct 2015 07:38:47 +0000 (15:38 +0800)]
Improve prompt when switching between PGP and S/MIME. (closes #3777)

Only prompt when encrypt or sign is enabled.

Also, improve oppenc to run and refresh the status when switching.

9 years agoFix chomp in smime_handle_cert_email.
Kevin McCarthy [Wed, 30 Sep 2015 03:25:28 +0000 (11:25 +0800)]
Fix chomp in smime_handle_cert_email.

During a review of the previous patch, Oswald Buddenhagen noticed two
of the fixed oob reads had another problem: they were "chomping" (the
newline) without verifying there actually was a newline at the end of
the string.

9 years agomerge stable
Kevin McCarthy [Wed, 30 Sep 2015 03:25:08 +0000 (11:25 +0800)]
merge stable

9 years agoFix oob reads when fgets returns "\0". (closes #3776)
Kevin McCarthy [Wed, 30 Sep 2015 03:21:06 +0000 (11:21 +0800)]
Fix oob reads when fgets returns "\0".  (closes #3776)

The ticket reported an out of bounds read in mutt_read_rfc822_line()
when a '\0' was embedded on its own line in the headers.  The function
assumed if fgets() didn't return NULL, then the string would have at
least one character.

I scanned the rest of the code and found three other places making the
same assumption for fgets.

Thanks to hanno for finding this with the "american fuzzy lop" tool.

9 years agoAdd new optional index_format expandos %r and %R.
Derek Schrock [Mon, 21 Sep 2015 00:37:47 +0000 (20:37 -0400)]
Add new optional index_format expandos %r and %R.

These generate a comma separated list of all the To and Cc recipients.

Also, increase the attribution buffer size to accommodate these new
expandos.

9 years agoGerman translation fix. (closes #3701)
bat guano [Mon, 21 Sep 2015 02:28:22 +0000 (10:28 +0800)]
German translation fix.  (closes #3701)

9 years agoUpdated Japanese translation.
TAKAHASHI Tamotsu [Sun, 20 Sep 2015 11:05:47 +0000 (19:05 +0800)]
Updated Japanese translation.

9 years agoTranslation improvements.
Kevin McCarthy [Sun, 20 Sep 2015 10:58:58 +0000 (18:58 +0800)]
Translation improvements.

Thanks to TAKAHASHI Tamotsu for pointing out these ones I missed.

9 years agoEnable msgfmt translation check flag -c.
Kevin McCarthy [Sun, 13 Sep 2015 06:41:54 +0000 (14:41 +0800)]
Enable msgfmt translation check flag -c.

Fix discovered translation format string errors.

9 years agoAdd translation comments and improvements.
Kevin McCarthy [Sun, 13 Sep 2015 03:47:09 +0000 (11:47 +0800)]
Add translation comments and improvements.

These were suggested by TAKAHASHI Tamotsu.

9 years agoImprove translation string in crypt-gpgme.c
Kevin McCarthy [Sat, 12 Sep 2015 03:25:53 +0000 (11:25 +0800)]
Improve translation string in crypt-gpgme.c

Combine into a single buffer to make the translation easier.
Also, mark a couple todos for alignment problems.

9 years agoFix double-decode during IMAP browse.
Kevin McCarthy [Sun, 6 Sep 2015 23:31:57 +0000 (16:31 -0700)]
Fix double-decode during IMAP browse.

cmd_parse_list() already calls imap_unmunge_mbox_name() on the mailbox
names returned from the server.  However, browse_add_list_result() was
taking those mailbox names and passing them to imap_add_folder(), which
was calling imap_unmunge_mbox_name() yet again.

The reason is that imap_browse() was directly calling imap_add_folder()
too, passing in a previously encoded "mbox" name.  After looking
carefully at the code, I could find no reason that mbox needed to
be encoded outside of the LIST commands..  Therefore I changed
imap_browse() to call imap_munge_mbox_name() on mbox for the
two LIST commands generated from it instead, and removed the
imap_unmunge_mbox_name() call inside imap_add_folder().

9 years agomerge stable
Kevin McCarthy [Sun, 6 Sep 2015 14:41:36 +0000 (07:41 -0700)]
merge stable

9 years agoFix use after free of ctx->last_tag. (closes #3775)
Kevin McCarthy [Sun, 6 Sep 2015 14:40:06 +0000 (07:40 -0700)]
Fix use after free of ctx->last_tag.  (closes #3775)

When using imap to access gmail, tagging and saving messages to "all
mail" and pressing <sync-mailbox> can result in the call path:
  mx_check_mailbox()
    imap_check_mailbox()
      imap_cmd_finish()
        imap_expunge_mailbox()
          mx_update_tables()
followed by:
  mx_sync_mailbox()

The HEADER pointed to by ctx->last_tag will be removed and FREE'ed in
mx_update_tables(), but will subsequently be accessed in mx_sync_mailbox().

This patch simply sets ctx->last_tag=NULL if it is freed inside mx_update_tables().

Thanks to Peter Lekensteyn for the bug report and ASAN report.

9 years agoUpdated Danish translation.
Morten Bo Johansen [Sun, 6 Sep 2015 02:55:41 +0000 (19:55 -0700)]
Updated Danish translation.

9 years agoAdd time_t conversion to fix gpgme segfault on OpenBSD.
Kevin McCarthy [Thu, 3 Sep 2015 01:11:28 +0000 (18:11 -0700)]
Add time_t conversion to fix gpgme segfault on OpenBSD.

time_t isn't the same size as gpgme_subkey_t->timestamp on OpenBSD.
Passing &subkey->timestamp to localtime was therefore passing an address
to the wrong size int and was causing a segfault.

Thanks to Hannes Wenzel for reporting the bug and providing a patch.

9 years agomerge default into stable
Kevin McCarthy [Mon, 31 Aug 2015 16:32:04 +0000 (09:32 -0700)]
merge default into stable

9 years agomutt-1.5.24 signed
Kevin McCarthy [Sun, 30 Aug 2015 17:27:09 +0000 (10:27 -0700)]
mutt-1.5.24 signed

9 years agoAdded tag mutt-1-5-24-rel for changeset 08e81162482f
Kevin McCarthy [Sun, 30 Aug 2015 17:26:24 +0000 (10:26 -0700)]
Added tag mutt-1-5-24-rel for changeset 08e81162482f

9 years agoautomatic post-release commit for mutt-1.5.24 mutt-1-5-24-rel
Kevin McCarthy [Sun, 30 Aug 2015 17:26:17 +0000 (10:26 -0700)]
automatic post-release commit for mutt-1.5.24

9 years agoPartially updated Esperanto translation.
Benno Schulenberg [Sun, 30 Aug 2015 17:21:34 +0000 (10:21 -0700)]
Partially updated Esperanto translation.

9 years agoMinor translation fixes.
Benno Schulenberg [Sun, 30 Aug 2015 17:18:28 +0000 (10:18 -0700)]
Minor translation fixes.

This makes two equivalent translation messages the exact same so they
only need to be translated once.

It also adds a missing translation marker (for the same string).

This same string is used in recvcmd.c so does not generate a new
translation string.

9 years agoSet release date. Minor fixes to release notes.
Kevin McCarthy [Sun, 30 Aug 2015 17:08:23 +0000 (10:08 -0700)]
Set release date.  Minor fixes to release notes.

9 years agoUpdated Catalan translation.
Ivan Vilata i Balaguer [Sat, 29 Aug 2015 19:51:31 +0000 (12:51 -0700)]
Updated Catalan translation.

9 years agoUpdated Dutch translation.
Benno Schulenberg [Sat, 29 Aug 2015 19:40:55 +0000 (12:40 -0700)]
Updated Dutch translation.

9 years agoMinor translation fix.
Benno Schulenberg [Sat, 29 Aug 2015 14:40:28 +0000 (07:40 -0700)]
Minor translation fix.

This makes two equivalent translation messages the exact same so they
only need to be translated once.

9 years agoUpdated Japanese translation.
TAKAHASHI Tamotsu [Fri, 28 Aug 2015 14:35:21 +0000 (07:35 -0700)]
Updated Japanese translation.

9 years agoUpdated Russian translation.
Vsevolod Volkov [Thu, 20 Aug 2015 18:18:05 +0000 (11:18 -0700)]
Updated Russian translation.

9 years agoUpdated Czech translation
Petr Pisar [Wed, 19 Aug 2015 16:41:49 +0000 (09:41 -0700)]
Updated Czech translation

9 years agoAdd idn to MUTTLIBS instead of LIBS (see #3638)
Kevin McCarthy [Mon, 17 Aug 2015 21:51:07 +0000 (14:51 -0700)]
Add idn to MUTTLIBS instead of LIBS (see #3638)

Currently, -lidn is included while linking all the mutt binaries.  Add
it to MUTTLIBS instead so it's only used for the mutt linking.

Also, add $LIBICONV to $LIBS before checking for some of the idna
functions.  On some sytems, there are apparently issues when using
static linking. (Thanks to grarpamp for reporting).

9 years agoChange mutt_adv_mktemp to call mutt_mktemp instead of mktemp. (see #3638).
Kevin McCarthy [Mon, 17 Aug 2015 19:31:40 +0000 (12:31 -0700)]
Change mutt_adv_mktemp to call mutt_mktemp instead of mktemp. (see #3638).

mutt_mktemp is currently called in 95% of the cases in mutt, and
is already our "own rolled" version of mktemp.  The "insecure mktemp
warning" discussion keeps coming up, so instead add prefix and suffix
functionality to mutt_mktemp() and call that.

All other uses of Tempdir in the mutt source did not call
mutt_expand_path() first, so remove that from mutt_adv_mktemp().

9 years agoEnable C99 mode for compiler. (See #3638).
Kevin McCarthy [Mon, 17 Aug 2015 19:26:43 +0000 (12:26 -0700)]
Enable C99 mode for compiler.  (See #3638).

This is already the default for clang (FreeBSD) so shouldn't cause any
issues.

Enabling this will increase the allowed static string length and remove
the Copyright length warning.

9 years agoCompile txt2c using automake rules.
Kevin McCarthy [Tue, 11 Aug 2015 18:20:15 +0000 (11:20 -0700)]
Compile txt2c using automake rules.

The compilation rule used $< which isn't portable for ordinary make
rules.

9 years agoFix txt2c.sh sed invocations to use posix syntax.
David Champion [Tue, 11 Aug 2015 18:20:10 +0000 (11:20 -0700)]
Fix txt2c.sh sed invocations to use posix syntax.

9 years agoUpdated French translation.
Vincent Lefevre [Fri, 7 Aug 2015 01:38:48 +0000 (03:38 +0200)]
Updated French translation.

9 years agoMinor documentation fix.
Kevin McCarthy [Wed, 29 Jul 2015 16:26:19 +0000 (09:26 -0700)]
Minor documentation fix.

In one place, the documentation mentioned 'alternative-order' instead of
'alternative_order'.

9 years agoAdd error handling for ^ and other empty mailbox shortcuts.
Kevin McCarthy [Wed, 29 Jul 2015 16:07:51 +0000 (09:07 -0700)]
Add error handling for ^ and other empty mailbox shortcuts.

(closes #2402) (closes #3735)

Explicitly mention the ^ example in the documentation added in 6d733cab6b45.

Add an error message for ^ when CurrentFolder is not set.  Add checks
for other mailbox shortcuts that expand to the empty string.  This
could happen if the @alias shortcut was accidentally used, or the value
referenced by a shortcut isn't set yet.

9 years agoAdd "Mailbox Matching in Hooks" section to manual.
Kevin McCarthy [Mon, 27 Jul 2015 21:09:55 +0000 (14:09 -0700)]
Add "Mailbox Matching in Hooks" section to manual.

Folder-hook and mbox-hook perform mailbox shortcut expansion on the
regexp parameter.  Add a section to the manual to give examples and make
the behavior clearer.

9 years agoHandle malformed ms-exchange pgp-encrypted block. (closes #3742)
Kevin McCarthy [Sun, 26 Jul 2015 21:48:53 +0000 (14:48 -0700)]
Handle malformed ms-exchange pgp-encrypted block. (closes #3742)

In certain circumstances, Exchange corrupts a multipart/encrypted block
into:
  <multipart/mixed>
    <text/plain>
    <application/pgp-encrypted> [BASE64-encoded]
    <application/octet-stream> [BASE64-encoded]

This patch pulls the full detection of valid/invalid multiparts
into mutt_body_handler().  It extracts a run_decode_and_handler()
function, which is reused by new intermediate handlers to decode
the application/octet-stream part before passing it directly to
crypt_pgp_encrypted_handler.  These intermediate handlers then check
and set any GOODSIG flags back into the parent part.

This change may result in less error messages for invalid
multipart/encrypted parts.  Instead, mutt will default to the
multipart_handler if it isn't fully "correct".

Viewing attachments uses crypt_pgp_decrypt_mime() which bypasses the
handler mechanism.  Add decoding to the decrypt_mime() functions for pgp
and gpgme.

Thanks to Vincent Brillault for his analysis and initial patch.

9 years agoImap: Fix flag caching after sync.
Kevin McCarthy [Tue, 21 Jul 2015 19:34:49 +0000 (12:34 -0700)]
Imap: Fix flag caching after sync.

The flags cached in IMAP_HEADER_DATA were not updated to match the
HEADER flags after a sync.  This means if a flag were toggled and synced
twice, the second sync was not sending the flag update.

Thanks to Noah Misch for the patch.

9 years agoAdd support for checking cur/ in Maildir for unread mails in buffy.
Martin Sandsmark [Sat, 18 Jul 2015 16:40:32 +0000 (18:40 +0200)]
Add support for checking cur/ in Maildir for unread mails in buffy.

Also skip messages with the S flag when checking for unread mails.

9 years agoSet AUTOMAKE_OPTIONS in doc/Makefile.am. (closes #3766)
Kevin McCarthy [Fri, 24 Jul 2015 20:36:16 +0000 (13:36 -0700)]
Set AUTOMAKE_OPTIONS in doc/Makefile.am. (closes #3766)

Add the "foreign" option to silence warnings generated by flymake.am.

9 years agoUpdate the UPDATING file with changes since 1.5.23.
Kevin McCarthy [Fri, 24 Jul 2015 20:15:23 +0000 (13:15 -0700)]
Update the UPDATING file with changes since 1.5.23.

9 years agoFix compiler type warnings. (closes #3765)
Kevin McCarthy [Thu, 23 Jul 2015 21:57:04 +0000 (14:57 -0700)]
Fix compiler type warnings. (closes #3765)

The output of mutt_local_tz() was being passed to abs().  Technically
the return type is time_t, but it represents a small value: the timezone
offset in seconds.  Add a safe explicit cast to int.

Change the txt parameter of mutt_make_help() to type const char *.
Typically all calls run the txt parameter through _(), which
accepts const char * and returns a char *. However, if NLS is not
enabled, _() is a noop, simply returning the parameter itself.  In
mutt_compile_help(), items[i].name is const char *, so it will generate
a warning when passed as the txt parameter of mutt_make_help().

On some systems, e.g. OS X, snprintf is defined as a macro.  One call
in hcache.c was embedding directives inside the snprintf call.  This is
apparently undefined behavior, so duplicate the call instead.

9 years agoFix a few small compiler warnings. (See #3638)
Kevin McCarthy [Thu, 23 Jul 2015 02:23:12 +0000 (19:23 -0700)]
Fix a few small compiler warnings.  (See #3638)

In certain configurations, unused variables and labels were causing
warnings.

Add a missing "#include <netinet/in.h>" to pop_lib.c.

9 years agomerge stable
Kevin McCarthy [Tue, 21 Jul 2015 19:41:13 +0000 (12:41 -0700)]
merge stable

9 years agoAdd note about gpg fixed-list-mode. (closes #3763).
Kevin McCarthy [Sun, 19 Jul 2015 22:55:51 +0000 (15:55 -0700)]
Add note about gpg fixed-list-mode.  (closes #3763).

Thanks to Gregor Zattler for the original patch.

9 years agoFix batch mode lockup. (closes #3761) (closes #3760)
Kevin McCarthy [Sat, 11 Jul 2015 21:36:51 +0000 (14:36 -0700)]
Fix batch mode lockup.  (closes #3761) (closes #3760)

The new TS capability check was also running when curses wasn't
initialized.  Move check inside the !OPTNOCURSES block.

9 years agoUse $(VAR) instead of @VAR@ in Makefile.am files. (closes #3664)
Kevin McCarthy [Thu, 9 Jul 2015 21:50:05 +0000 (14:50 -0700)]
Use $(VAR) instead of @VAR@ in Makefile.am files.  (closes #3664)

The @VAR@ form is not overridable, such as the case for #3664 where the
reporter wanted to override DOTLOCK_GROUP.

It's doubtful targets need to be overriden, but it makes sense to be
consistent in the usage of automake substituted variables unless there
is a particular reason/bug to work around.

9 years agoRemove 'hit enter' prompt for GPGME initialization errors.
Kevin McCarthy [Sun, 5 Jul 2015 20:38:39 +0000 (13:38 -0700)]
Remove 'hit enter' prompt for GPGME initialization errors.

Older GPGMEs are missing CMS (S/MIME) support.  Don't force the poor
users to hit enter every time they start mutt.

9 years agoRemove the automake mkinstalldirs script.
Kevin McCarthy [Thu, 2 Jul 2015 18:21:22 +0000 (11:21 -0700)]
Remove the automake mkinstalldirs script.

Add to .hgignore so it doesn't accidentally get added again.

9 years agoConvert from using mkinstalldirs to $(MKDIR_P).
Kevin McCarthy [Thu, 2 Jul 2015 18:21:19 +0000 (11:21 -0700)]
Convert from using mkinstalldirs to $(MKDIR_P).

The automake mkinstalldirs script is now deprecated. "install-sh -d"
can be used in place.  Configure.ac already includes AC_PROG_INSTALL,
which will ensure install-sh is bundled.  Add AC_PROG_MKDIR_P, which
will set $(MKDIR_P) to either a thread-safe "mkdir -p" or will fall back
to using install-sh.

9 years agoFix build-release to always update automake tools. (closes #3671)
Kevin McCarthy [Thu, 2 Jul 2015 18:18:42 +0000 (11:18 -0700)]
Fix build-release to always update automake tools. (closes #3671)

1.5.22 and 1.5.23 include a version of "missing" older than the version
of automake/aclocal used to generate configure.

Fix the build-release script to always copy and force update of the
automake tools.

9 years agoAdd note to manual clarifying push/exec and folder-hook order.
Kevin McCarthy [Mon, 29 Jun 2015 21:35:28 +0000 (14:35 -0700)]
Add note to manual clarifying push/exec and folder-hook order.

Folder-hooks are executed in the order declared.  However, push/exec
commands will simply prepend to the keyboard buffer.  If there are
multiple push/exec commands, each will prepend to the earlier one.  The
result is that they will end up being "run" in reverse order once keyboard
buffer processing starts.

9 years agoFix IMAP segfault due to NULL capstr.
Kevin McCarthy [Fri, 26 Jun 2015 19:23:26 +0000 (12:23 -0700)]
Fix IMAP segfault due to NULL capstr.

After a failed login, the connection is left open but capstr is freed.
If a second login attempt is made, imap_auth_sasl was trying to strstr
using the NULL capstr.

Add a NONULL around the capstr parameter to strstr.  Change
imap_conn_find() to keep the capstr around until a successful
authentication occurs.

9 years agoAdd comment about "(f)orget it" choice in pgp/smime send menus.
Kevin McCarthy [Fri, 26 Jun 2015 18:38:16 +0000 (11:38 -0700)]
Add comment about "(f)orget it" choice in pgp/smime send menus.

9 years agoUpdated French translation.
Vincent Lefevre [Fri, 26 Jun 2015 10:28:45 +0000 (12:28 +0200)]
Updated French translation.

9 years agoRewrite S/MIME key searching. Add purpose checking.
Kevin McCarthy [Sun, 7 Jun 2015 20:59:32 +0000 (13:59 -0700)]
Rewrite S/MIME key searching.  Add purpose checking.

Model the smime.c searching off of classic pgp searching.  Create
smime_get_key_by_hash()/addr()/str() functions that use a single
smime_get_candidates() function to search the index.

Use the new smime_keys generated purpose flag in the index to filter by
KEYFLAG_CANENCRYPT and KEYFLAG_CANSIGN.  Old style indices fall back to
all-inclusive behavior.

9 years agosmime_keys: Add refresh command.
Kevin McCarthy [Sun, 7 Jun 2015 20:59:23 +0000 (13:59 -0700)]
smime_keys: Add refresh command.

Refresh verifies the trust of each certificate and adds the purpose flag
if it is missing.  It pushes those values to the private keys' index
file too.

9 years agosmime_keys: Add purpose flag to index.
Kevin McCarthy [Sun, 7 Jun 2015 20:59:19 +0000 (13:59 -0700)]
smime_keys: Add purpose flag to index.

A subsequent patch will change smime.c to use the purpose to filter
certs and keys that can't be used for signing or encryption.

Issuer, trust, and purpose flags were also added to the keys index file,
to keep parsing simpler in smime_keys as well as smime.c.  The trust and
purpose are derived from the cert.  Issuer is set to '?' as this should
never be needed for keys.

9 years agosmime_keys: Handle certificate chains in add_cert. (closes #3339) (closes #3559)
Kevin McCarthy [Mon, 25 May 2015 17:59:50 +0000 (10:59 -0700)]
smime_keys: Handle certificate chains in add_cert. (closes #3339) (closes #3559)

Find all chains in the certificate provided.  For each chain create a
separate leaf and intermediate certificate file.  Because Mutt controls
the label prompt, use a single label for all chains.

Also, loosen up cert file parsing to allow attributes even if they
aren't delimited by a "Bag Attributes" header.

Thanks to David J. Weller-Fahy for his testing and feedback!

9 years agosmime_keys: Convert openssl execution to use open("-|",...). (see #3575) (see #2456)
Kevin McCarthy [Mon, 18 May 2015 20:27:12 +0000 (13:27 -0700)]
smime_keys: Convert openssl execution to use open("-|",...). (see #3575) (see #2456)

This does a fork/exec, bypassing the shell, and so handles
spaces, quotes, and other shell-characters problems better than the
simple fix in changeset:c66a6bd5d0d5

This also fixes the "verify with crl" bug in #2456: the grep is now done
in perl.

Thank you Vincent Lefevre for your review and feedback!

9 years agoUpdated French translation (related to PGP & S/MIME, with corrections).
Vincent Lefevre [Mon, 18 May 2015 01:25:09 +0000 (03:25 +0200)]
Updated French translation (related to PGP & S/MIME, with corrections).

9 years agosmime_keys: quote filenames. (closes #3575) (see #2456)
Kevin McCarthy [Fri, 15 May 2015 21:09:54 +0000 (14:09 -0700)]
smime_keys: quote filenames. (closes #3575) (see #2456)

Wrap the various filename parameters in single quotes in case there are
spaces in the filename.

9 years agoStart cleaning up and fixing smime_keys.pl (closes #3324) (see #2456)
Kevin McCarthy [Fri, 15 May 2015 17:47:38 +0000 (10:47 -0700)]
Start cleaning up and fixing smime_keys.pl (closes #3324) (see #2456)

* Convert to using File::Temp (#3324).  This was also suggested at
  https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=775199

* Use File::Temp for add_p12 temp file. (#2456)

* Make the query_label() method a bit more robust with empty strings,
  ctrl-d, and leading spaces.

* Clean up openssl_do_verify() logic.  Mark cert as invalid
  rather that die'ing if an openssl verify command fails.

* General cleanup:
  - Clearly separate op handler, certificate management, and helper
    functions by section and using prefixes.
  - Create openssl helper functions to reduce copy/paste invocations
    and make the code clearer.
  - Make indentation consistent at 2 spaces.
  - Change handle_add_pem() to re-use handle_add_chain() once the
    correct files are identified.
  - Change openssl_parse_pem() to return a single array of data
    structures representing the parsed certs/keys.

9 years agoProvide SSL cipher selection option. (closes #3167)
Kevin McCarthy [Sun, 3 May 2015 23:25:45 +0000 (16:25 -0700)]
Provide SSL cipher selection option. (closes #3167)

Creates a $ssl_ciphers option that allows direct selection of the
ciphers for OpenSSL (via SSL_CTX_set_cipher_list) and GnuTLS (via
gnutls_priority_set_direct).

Thank you Sergio Gelato for the patch.

9 years agoFix performance regression for ~b/~B searching. (closes #3743)
Seth Forshee [Sun, 26 Apr 2015 02:00:13 +0000 (19:00 -0700)]
Fix performance regression for ~b/~B searching. (closes #3743)

In mutt_is_autoview(), changeset b58cdfacfb89 introduced a call to
rfc1524_mailcap_lookup() before checking if the MIME type should
be autoviewed based on the user's preferences. This caused a major
performance regression for ~b/~B searching.

Rearrange mutt_is_autoview() to check the user preferences first, then
search for a mailcap entry only if the MIME type should be autoviewed.

In order to preserve correct mime_lookup behavior, re-add a call to
mutt_check_lookup_list() before scanning the AutoViewList.

9 years agoAdd $crypt_confirmhook option. (see #3727)
Kevin McCarthy [Sun, 19 Apr 2015 20:15:50 +0000 (13:15 -0700)]
Add $crypt_confirmhook option. (see #3727)

Allow the confirmation prompt for crypt-hooks to be disabled.  This is
useful for multiple crypt-hook users (e.g. encrypted mailing lists), or
just for people who are certain of their crypt-hooks and don't want to
be prompted every time.

Thanks to Dale Woolridge for the original patch.

9 years agoAllow multiple crypt-hooks with the same regexp. (closes #3727).
Kevin McCarthy [Sun, 19 Apr 2015 20:15:48 +0000 (13:15 -0700)]
Allow multiple crypt-hooks with the same regexp. (closes #3727).

Changes the crypt-hook to accumulate a LIST of hooks with
the same regexp, as opposed to replacing the hook data.
This is useful for the case of encrypted mailing lists.

Update pgp classic and gpgme to process a LIST of crypt-hook
values instead of just one.

This version of the patch creates a new _mutt_list_hook() function that
(in theory) other hooks could use if they were changed to return a list.
It also changes the behavior when a crypt-hook is declined: previously
it would immediately use the original recipient for key selection.  Now
it will only do that if all crypt-hooks for a recipient are declined.
This allows all, a subset, or none of the hooks to be used.

Thanks to Rejo Zenger, Remco Rijnders, and Dale Woolridge for their work
on various versions of this patch.

9 years agoFix a few more incorrect documentation lines for hooks.
Kevin McCarthy [Thu, 16 Apr 2015 02:25:46 +0000 (19:25 -0700)]
Fix a few more incorrect documentation lines for hooks.

Hopefully this finishes up aac979f8b529 and ca5aff2a4b6e.

9 years agoUse fingerprints instead of keyIDs internally. (see #3695)
Kevin McCarthy [Thu, 16 Apr 2015 01:57:17 +0000 (18:57 -0700)]
Use fingerprints instead of keyIDs internally. (see #3695)

Add a helper function, pgp_fpr_or_lkeyid(), that returns the fingerprint
if available, otherwise falls back to the long key id.  Convert Mutt to
use that value for pgp command invocation.

Change gpgme to use an equivalent crypt_fpr_or_lkeyid() function in a
couple places too (for keylist generation and sign-as key selection).

Update documentation to mention fingerprints and the --with-fingerprint
option for gpg invocation.

Change pgp_long_ids to default: yes, but add a note mentioning
it's only used for the display of key IDs in a few places.