]> granicus.if.org Git - mutt/log
mutt
6 years agoConvert pgp_invoke_list_keys and mix_send_message to use BUFFERs.
Kevin McCarthy [Fri, 28 Sep 2018 22:08:19 +0000 (15:08 -0700)]
Convert pgp_invoke_list_keys and mix_send_message to use BUFFERs.

Both repetitively perform a lot of copying back in forth, which is
much cleaner with a BUFFER.

Note that in pgp_invoke_list_keys, if there are no hints uids->data
would be NULL.  However, the pgp_invoke() checks and wraps all the
format substitutions with NONULL.

6 years agoChange imap_rename_mailbox to use a BUFFER.
Kevin McCarthy [Fri, 28 Sep 2018 21:22:09 +0000 (14:22 -0700)]
Change imap_rename_mailbox to use a BUFFER.

6 years agoIncrease buffer sizes for some IMAP commands.
Kevin McCarthy [Fri, 28 Sep 2018 00:29:16 +0000 (17:29 -0700)]
Increase buffer sizes for some IMAP commands.

Use to ensure assembled IMAP commands fit in the resultant buffer to
be imap_exec()'ed.

RFC2683 suggested a limit of 1000, but asked servers to accept up to
8000.  Furthermore, RFC7162 bumped the client limit suggestion up to
8192.  So I don't believe any issues will be caused by this.

Most of these are increases are just to remove theoretical truncation
warned about by the compiler; I don't believe we've had reports of
actual command truncation due to a mailbox 1024 characters long.

6 years agoAdd regfree to configure regex test.
Kevin McCarthy [Thu, 27 Sep 2018 22:03:40 +0000 (15:03 -0700)]
Add regfree to configure regex test.

This allows to run the system regex lib even when compiling with
ASAN.  Previously, ASAN would report the regex_t leak and change the
exit code.

6 years agoFix non-threaded $sort_aux "reverse-" sorting.
Kevin McCarthy [Wed, 26 Sep 2018 02:03:56 +0000 (19:03 -0700)]
Fix non-threaded $sort_aux "reverse-" sorting.

The secondary sort was looking at (Sort & SORT_REVERSE) instead
of (SortAux & SORT_REVERSE), so wasn't even performing the reverse
based on the correct flag.

Additionally, afterwards, the primary sort was improperly applying a
reverse when the secondary sort returned non-zero.

Change SORTCODE() to look at SortAux when we are inside a secondary
sort.

Change AUXSORT() to return the result if the secondary sort returns
non-zero.  It is ugly to put a return inside the macro, but the check
for non-zero needs to be performed inside the AUXSORT if branch.

If the secondary sort returns 0, then the primary sort can still
compare index and apply a reverse as needed.

6 years agoMerge branch 'stable'
Kevin McCarthy [Sat, 22 Sep 2018 16:57:30 +0000 (09:57 -0700)]
Merge branch 'stable'

6 years agoIncrease user/pass field sizes in auth_login.
Kevin McCarthy [Sat, 22 Sep 2018 16:53:55 +0000 (09:53 -0700)]
Increase user/pass field sizes in auth_login.

account.pass was previously increased to 256 in cd421c13.  Also, the
buf should be bigger than the user+pass+"LOGIN", so bump it up too.

6 years agoAdd output during smime_keys purpose flag checking.
Kevin McCarthy [Sat, 22 Sep 2018 00:13:02 +0000 (17:13 -0700)]
Add output during smime_keys purpose flag checking.

6 years agoSend imap keepalives for interactive filters.
Kevin McCarthy [Tue, 18 Sep 2018 02:40:22 +0000 (19:40 -0700)]
Send imap keepalives for interactive filters.

When viewing attachments externally with a (non-copiousoutput) mailcap
entry missing %s, the command is invoked as a filter, with the
attachment piped into stdin.  However, unlike a filter, the user
interacts with the command, instead of just displaying the output in
the pager.

Just as with the mutt_system() command, Mutt needs to send imap
keepalives to keep those connections from closing during the
potentially extended invocation.

Thanks to John Hawkinson for the bug report, and his suggested patch,
which this commit is based upon.

6 years agoRemove purpose checks in smime_keys.pl verify step.
Kevin McCarthy [Fri, 14 Sep 2018 21:23:04 +0000 (14:23 -0700)]
Remove purpose checks in smime_keys.pl verify step.

The purpose checks are subsequently performed, and added as a field to
the .index.  In any case, it turns out passing multiple '-purpose'
arguments isn't even correct: openssl appears to just use the last
one.

Thanks to David J. Weller-Fahy for reporting the problem, and for
including a possible patch.

6 years agoFree queries and alias_queries before exiting.
Kevin McCarthy [Fri, 14 Sep 2018 21:21:04 +0000 (14:21 -0700)]
Free queries and alias_queries before exiting.

6 years agoChange imap_conn_find() to always return an authenticated conn.
Kevin McCarthy [Thu, 13 Sep 2018 01:23:00 +0000 (18:23 -0700)]
Change imap_conn_find() to always return an authenticated conn.

With the flag MUTT_IMAP_CONN_NONEW, it was already ensured the
connection would be authenticated.  However, without that flag, an
error in opening the connection or authentication would still return
an idata.

The callers that didn't bother to check the state were still assuming
authenticated, because they were all subseqeuently issuing an
"authenticated state" command to the server.

Rather than add state checks to every caller, just change the function
to return NULL if the idata did not end up in an authenticated state.

Remove the now redundant state checks in imap_open_mailbox() and
imap_get_mailbox().

6 years agoChange compress examples to type "example" rather than "sect4".
Kevin McCarthy [Sun, 2 Sep 2018 21:43:04 +0000 (14:43 -0700)]
Change compress examples to type "example" rather than "sect4".

6 years agoClean up documentation link targets.
Kevin McCarthy [Sun, 2 Sep 2018 21:22:09 +0000 (14:22 -0700)]
Clean up documentation link targets.

Move link targets for iconv-hook and sidebar_whitelist to the
beginning of a section, rather than a link embedded inside a command.

6 years agoUpdated French translation.
Vincent Lefevre [Sun, 2 Sep 2018 18:53:41 +0000 (20:53 +0200)]
Updated French translation.

6 years agoFix typo
Cody Brownstein [Sat, 1 Sep 2018 16:47:07 +0000 (09:47 -0700)]
Fix typo

6 years agoConvert certificate prompts to show sha-256 instead of md5.
Kevin McCarthy [Fri, 31 Aug 2018 22:50:00 +0000 (15:50 -0700)]
Convert certificate prompts to show sha-256 instead of md5.

Due to the length of the sha-256 fingerprint, split the output into
two lines.

Note that this change now requires OpenSSL 0.9.8+ [2005-07-05], and
GnuTLS 1.7.4+ [2007-02-05].

6 years agoRename pgpring to mutt_pgpring.
Kevin McCarthy [Wed, 29 Aug 2018 22:08:19 +0000 (15:08 -0700)]
Rename pgpring to mutt_pgpring.

pgpring is used by another common package, signing-party.  At the
request of ArchLinux, I am renaming our version to be prefixed by
"mutt_" in order to remove a naming conflict.

This is a minor inconvenience for pgp2, pgp5, and pgp6 users, but I
believe this constitutes an extremely small number of users at this
point.

I am keeping pgpewrap as-is because it is also used by GnuPG, and has
no such naming conflict.

6 years agoRemove extra lstats() in safe_rename() upon link success.
Kevin McCarthy [Wed, 29 Aug 2018 20:00:14 +0000 (13:00 -0700)]
Remove extra lstats() in safe_rename() upon link success.

I originally kept the lstat()'s in order to make as few changes as
possible to the function.  However, Derek Martin argues correctly that
if we are trusting the link() 0-retval, the lstats are unnecessary and
in fact can cause a performance impact over NFS.

6 years agoAdd additional error handling to safe_rename().
Kevin McCarthy [Mon, 27 Aug 2018 01:43:20 +0000 (18:43 -0700)]
Add additional error handling to safe_rename().

It is apparently possible for link() to return an error but the link
to still be created.  Add a double check for that case.  If the files
match, unlink the src and return success.

6 years agonew Finnish translation
Tommi A Pirinen [Tue, 28 Aug 2018 15:43:46 +0000 (17:43 +0200)]
new Finnish translation

6 years agoUpdated French translation.
Vincent Lefevre [Tue, 28 Aug 2018 12:07:31 +0000 (14:07 +0200)]
Updated French translation.

6 years agoUpdated French translation.
Vincent Lefevre [Tue, 28 Aug 2018 11:59:40 +0000 (13:59 +0200)]
Updated French translation.

6 years agoMerge branch 'stable'
Kevin McCarthy [Sun, 26 Aug 2018 23:10:13 +0000 (16:10 -0700)]
Merge branch 'stable'

6 years agoFix alias documentation examples.
Kevin McCarthy [Sun, 26 Aug 2018 23:08:06 +0000 (16:08 -0700)]
Fix alias documentation examples.

Thanks to Cody Brownstein for pointing out the problem.

6 years agoChange $query_format to use mutt_format_s.
Kevin McCarthy [Fri, 24 Aug 2018 22:49:49 +0000 (15:49 -0700)]
Change $query_format to use mutt_format_s.

Use the character-cell width functions so that multibyte output is
properly formatted.

6 years agoDisplay an error message if syncing fails.
Kevin McCarthy [Fri, 24 Aug 2018 19:56:54 +0000 (12:56 -0700)]
Display an error message if syncing fails.

Ticket 36 reported an issue where a maildir was removed while the
mailbox was opened.  Later, attempting to sync displayed the message
"Writing xxx...", which remained on the screen.  The reporter actually
thought mutt was frozen, but it was simply that on a sync error Mutt
wasn't clearing or updating the message window.

There is some error message handling for mbox.c check_mailbox, but I
don't think that is the right place to further propogate messages.
Instead, add an error to the same place the initial "Writing..."
message is created.

6 years agoAdd compose-to-sender functionality.
Kevin McCarthy [Wed, 22 Aug 2018 22:07:45 +0000 (15:07 -0700)]
Add compose-to-sender functionality.

This patch is loosely based on the NeoMutt feature, but adds in
support for the attach menu, reuses functionality in send.c, and has
proper mode checks.

Thanks to Enno for the opening the ticket requesting the port.

6 years agoFix nested macro warning.
Kevin McCarthy [Tue, 21 Aug 2018 22:51:09 +0000 (15:51 -0700)]
Fix nested macro warning.

Pull the #if/#else outside of the snprintf in imap.c.  On some
platforms, snprintf is a macro itself, which leads to a warning about
undefined behavior.

Thanks to Charles Diza for pointing out the problem.

6 years agoRemove compare_stat() call in safe_rename().
Kevin McCarthy [Tue, 14 Aug 2018 21:31:34 +0000 (14:31 -0700)]
Remove compare_stat() call in safe_rename().

Some filesystems, such as sshfs, implement hard links strangely.  The
hard link is created, but is represented by a different inode number
by the sshfs layer.  The current maildir code goes into an infinite
loop in this case.  Remove the compare_stat() and trust that a link()
return code of 0 means the link really did get created.  Still, keep
the stats just as a minor check.

6 years agoMerge branch 'stable'
Kevin McCarthy [Tue, 21 Aug 2018 22:18:24 +0000 (15:18 -0700)]
Merge branch 'stable'

6 years agoAdd autoconf check for libunistring when checking for idn2.
Kevin McCarthy [Tue, 21 Aug 2018 22:00:23 +0000 (15:00 -0700)]
Add autoconf check for libunistring when checking for idn2.

-lunistring is only explicitly needed when compiling statically, so
add a AC_SEARCH_LIBS to add it to LIBS if it is found.

Thanks to Fabrice Fontaine for the heads-up about the problem and the
merge request.

6 years agoUpdated French translation.
Vincent Lefevre [Thu, 16 Aug 2018 09:49:13 +0000 (11:49 +0200)]
Updated French translation.

6 years agoAllow ctrl-c to interrupt initial IMAP header download.
Kevin McCarthy [Wed, 15 Aug 2018 23:13:45 +0000 (16:13 -0700)]
Allow ctrl-c to interrupt initial IMAP header download.

Once the mailbox is open, it is significantly more complicated to
abort and keep Mutt from crashing.  But during the initial
open/download Mutt is prepared to close the mailbox cleanly on
failure.

6 years agoRemove legacy trim_incomplete_mbyte() in the pager.
Kevin McCarthy [Tue, 14 Aug 2018 21:04:05 +0000 (14:04 -0700)]
Remove legacy trim_incomplete_mbyte() in the pager.

Commit 4b1deb57 added the trim_incomplete_mbyte() call, but at
that time, the function was using fgets() into a fixed-sized
buffer.  The function was passing in "blen - 1" to the size
parameter of fgets, so the check for blen-2 was to see if the
buffer was completely filled by the fgets.

Commit d39d9c0c converted to use a dynamic buffer, but the
trim_incomplete_mbyte() was left in.  It now serves no purpose
because the entire line will be read in.  Presumably the buggy
regexp lib should have been fixed by now too.

6 years agoDon't match $abort_noattach_regexp on quoted lines.
Kevin McCarthy [Tue, 14 Aug 2018 02:02:32 +0000 (19:02 -0700)]
Don't match $abort_noattach_regexp on quoted lines.

6 years agoRefactor out mutt_is_quote_line().
Kevin McCarthy [Tue, 14 Aug 2018 01:56:37 +0000 (18:56 -0700)]
Refactor out mutt_is_quote_line().

This makes resolve_types() a tiny bit clearer, and will be usable by
$abort_noattach.

6 years agoConvert abort_noattach scan to use mutt_read_line().
Kevin McCarthy [Tue, 14 Aug 2018 01:22:58 +0000 (18:22 -0700)]
Convert abort_noattach scan to use mutt_read_line().

I should have fixed this up before committing the patch.

6 years agoOnly sync CONDSTORE and QRESYNC on the initial download.
Kevin McCarthy [Mon, 13 Aug 2018 16:43:55 +0000 (09:43 -0700)]
Only sync CONDSTORE and QRESYNC on the initial download.

In the midst of the imap_read_headers() refactor, I forgot to put this
guard on the /MODSEQ and /UIDSEQSET storage.

Because we don't deal with flag sync issues while the mailbox is open,
or when it closes, we only want to write those values to the header
cache during the initial download.

It makes no sense to perform all the header cache work if new messages
come into an open empty mailbox, so add a parameter to flag the
initial download, rather than check for msn_begin==1.

6 years agoUpdated French translation.
Vincent Lefevre [Sun, 12 Aug 2018 20:02:38 +0000 (22:02 +0200)]
Updated French translation.

6 years agoAdd more doc for the $imap_condstore and $imap_qresync options.
Kevin McCarthy [Sun, 12 Aug 2018 02:14:10 +0000 (19:14 -0700)]
Add more doc for the $imap_condstore and $imap_qresync options.

6 years agoAlways check UID vs MSN when handling FETCH.
Kevin McCarthy [Sun, 12 Aug 2018 00:59:54 +0000 (17:59 -0700)]
Always check UID vs MSN when handling FETCH.

Ensure the UID vs MSN check is always done before flags are processed,
not just if the UID happened to appear before the FLAGS.

Improve the debug messages to make it clearer why a fetch response is
being skipped.

6 years agoAdd QRESYNC support.
Kevin McCarthy [Sat, 26 May 2018 23:02:04 +0000 (16:02 -0700)]
Add QRESYNC support.

Refactor imap_read_headers() to break into functions for the different
queries.

Move uid_hash population to the same place msn_index is populated.

Change the VANISHED handler to not decrement MSNs for EARLIER.
FastMail, at least, does assume there are no gaps, and really it makes
no sense for there to be.  Further testing will be needed.

6 years agoAdd utility functions for QRESYNC support.
Kevin McCarthy [Thu, 24 May 2018 20:26:35 +0000 (13:26 -0700)]
Add utility functions for QRESYNC support.

* Add function to generate uid_seqset for header cache.
  This will be used by QREFRESH to reconstruct the msn_index state.

* Add seqset data structure and iterator functions.

* Add cmd_parse_vanished, for QRESYNC support.

* Add and enable QRESYNC capability.

* Create helper functions to store and retrieve the uid_seqset.

6 years agoAdd basic CONDSTORE support when fetching initial messages.
Kevin McCarthy [Tue, 15 May 2018 01:12:39 +0000 (18:12 -0700)]
Add basic CONDSTORE support when fetching initial messages.

Store MODSEQ in the header cache, and use that to perform a "FETCH
CHANGEDSINCE" for header updates when initially downloading messages.

Further improvements could be made to add support when syncing.
Handling MODSEQ for FLAG updates while the mailbox is open would be
complicated by the fact that Mutt supports locally modified headers,
so we couldn't accept the new (or subsequent) MODSEQ.

However, this initial step may at least provide some benefit when
opening the mailbox, which is generally the most time and data
intensive.

6 years agoCreate mutt_buffer_increase_size() function.
Kevin McCarthy [Sat, 26 May 2018 21:46:16 +0000 (14:46 -0700)]
Create mutt_buffer_increase_size() function.

This will allow preallocating buffers that we know are going to be
big for qresync support.

This will also be useful for buffer pools later on.

6 years agoMove exit cleanup in main() to end of function.
Kevin McCarthy [Sun, 29 Jul 2018 01:43:31 +0000 (18:43 -0700)]
Move exit cleanup in main() to end of function.

Route exits to the same place to ensure uniform cleanup.

Message printing is a bit of a mess, but for now, try to keep the
exact same behavior.

6 years agoFix -z and -Z options to work with IMAP.
Kevin McCarthy [Sat, 28 Jul 2018 22:26:34 +0000 (15:26 -0700)]
Fix -z and -Z options to work with IMAP.

-Z did not work if $imap_passive was set (the default).  I think using
the option implies the desire to open a new connection and check
buffy at startup, so temporarily turn it off during the buffy.

-z was not hooked up for IMAP.  Change it to call imap_status().  This
also requires $imap_passive be unset, so temporarily turn the option
off too.

6 years agoAdd a note about doc/manual.tex generation.
Kevin McCarthy [Sat, 28 Jul 2018 20:16:50 +0000 (13:16 -0700)]
Add a note about doc/manual.tex generation.

The invocation doesn't work for me, but does work for Ken.  I'm
reluctant to touch and break it for existing users, so instead
add a note to the Makefile.am.  Perhaps someone with more knowledge of
those tools can make it portable.

6 years agoFix AUXSORT usage in compare_spam.
Kevin McCarthy [Sat, 28 Jul 2018 19:59:35 +0000 (12:59 -0700)]
Fix AUXSORT usage in compare_spam.

AUXSORT already checks if the first parameter is zero.

Additionally, the macro expands into more than one statement, so
putting inside an unbracketed if is misleading and generates a
warning on the latest gcc.

Fortunately, both statements checked if the first parameter was zero,
so no actual bug resulted.

6 years agoFix manual.pdf toc page numbers.
Ken Moffat [Thu, 26 Jul 2018 22:34:50 +0000 (15:34 -0700)]
Fix manual.pdf toc page numbers.

When TeX engines are not run sufficient times there are undefined
references - for manual.tex the page numbers in the Table of
Contents and the List of Tables render as '??'.  In this case:

Then shalt thou count to three, no more, no less.

6 years agoAdd message padding to ctx->vsize computation.
Kevin McCarthy [Thu, 26 Jul 2018 01:16:34 +0000 (18:16 -0700)]
Add message padding to ctx->vsize computation.

Use the mx_msg_padding_size() from the previous commit to be more
precise about the correct vsize.

This avoids strange situations where all the message are displayed in
a limit, but the vsize is not equal to the size.

6 years agoAdd mx_ops.msg_padding_size to return the padding for a mx type.
Kevin McCarthy [Thu, 26 Jul 2018 00:52:40 +0000 (17:52 -0700)]
Add mx_ops.msg_padding_size to return the padding for a mx type.

Mbox pads with a 1 byte, while mmdf pads with 10.  Because compress
depends on the child type, we create a mx_ops, which allows compress.c
to delegate to the child ops.

6 years agoSkip sort in mbox_sync_mailbox() when new/reopen occurs.
Kevin McCarthy [Wed, 25 Jul 2018 01:23:25 +0000 (18:23 -0700)]
Skip sort in mbox_sync_mailbox() when new/reopen occurs.

Callers of mx_sync_mailbox() and mx_close_mailbox() already check for
those cases and call update_index().  So remove the need_sort flag
setting when mbox_check_mailbox() returns new/reopen inside
mbox_sync_mailbox().

6 years agoHandle reopen/new_mail when closing mailbox in <imap-logout-all>.
Kevin McCarthy [Wed, 25 Jul 2018 01:12:20 +0000 (18:12 -0700)]
Handle reopen/new_mail when closing mailbox in <imap-logout-all>.

Other callers, such as OP_QUIT, OP_MAIN_CHANGE_FOLDER, and
OP_MAIN_SYNC_FOLDER handle the case where a sync or close_mailbox
fails due to new mail or a reopen.

OP_MAIN_LOGOUT_ALL appears to have been accidentally missed.  Add a
call to update_index() to properly sort and update vcounts.

6 years agoAdd ctx->vsize = 0 in a couple of places.
Vincent Lefevre [Tue, 24 Jul 2018 01:52:41 +0000 (03:52 +0200)]
Add ctx->vsize = 0 in a couple of places.

It is not clear whether this is needed, but in both cases, the old value
(if not 0) is obsolete. If there is a bug somewhere else about vsize, it
will be easier to notice it.

6 years agoImproved limit-to-all detection by skipping leading spaces of the pattern.
Vincent Lefevre [Sun, 22 Jul 2018 00:57:32 +0000 (02:57 +0200)]
Improved limit-to-all detection by skipping leading spaces of the pattern.

There are many equivalent limit-to-all patterns, but in practice, one
may want to limit to " ~A" in order to prevent the pattern from being
recorded in the history. Thus it is important to detect at least this
pattern and similar ones.

6 years agoBug fix: reset ctx->vsize in update_index_unthreaded on reopened mailbox.
Vincent Lefevre [Sat, 21 Jul 2018 23:46:03 +0000 (01:46 +0200)]
Bug fix: reset ctx->vsize in update_index_unthreaded on reopened mailbox.

This fixes a bug observed when doing the following:
1. Start Mutt on some mailbox.
2. Limit the view.
3. Set sort by date (thus unthreaded).
4. Set $status_format to display the size of the messages shown (%L).
5. Copy a message matching the limit pattern to this mailbox.
6. With another Mutt instance, remove this message from this mailbox.
7. Move the cursor to update the view.
Result: one was getting a value equal to twice the initial size.

6 years agoCleanup: avoid an ugly local preprocessor macro.
Vincent Lefevre [Sat, 21 Jul 2018 23:35:32 +0000 (01:35 +0200)]
Cleanup: avoid an ugly local preprocessor macro.

Note: This macro was also hiding the use of a variable, making the code
difficult to read.

6 years agoDisplay matching new messages in a thread-limited index.
Kevin McCarthy [Fri, 20 Jul 2018 03:28:38 +0000 (20:28 -0700)]
Display matching new messages in a thread-limited index.

Previously, the index performed pattern matching first, and then
resorted new mail.  The problem was that thread-limiting patterns,
e.g. ~(pattern), require threading data to properly match against the
new messages.

We already save new messages for the purposes of uncollapsing threads.
To keep the code cleaner, split off update_index() into
update_index_threaded()/unthreaded().  Then for threaded mode, save
the new messages first.  We can then sort (before pattern matching),
and use the save_new array to pattern match the new messages
afterwards.

The $uncollapse_new loop was unnecessarily performing a n^2 search.
Simplify to just iteratate over the save_new instead.

6 years agoMinor documentation fix.
Kevin McCarthy [Tue, 17 Jul 2018 17:04:24 +0000 (10:04 -0700)]
Minor documentation fix.

6 years agoUpdated French translation.
Vincent Lefevre [Tue, 17 Jul 2018 15:06:45 +0000 (17:06 +0200)]
Updated French translation.

6 years agoImprove OAUTHBEARER support.
Brandon Long [Tue, 26 Jun 2018 22:42:08 +0000 (15:42 -0700)]
Improve OAUTHBEARER support.

Move token refresh commands to their own config variables. Consolidate
code for refreshing tokens and generating the SASL OAUTHBEARER
argument in account.c. Add support for OAUTHBEARER to pop.

Fix pop_auth_oauth() mutt_from_base64() call from 1.10.1 release.

6 years agoMerge branch 'stable'
Kevin McCarthy [Mon, 16 Jul 2018 16:58:43 +0000 (09:58 -0700)]
Merge branch 'stable'

6 years agoautomatic post-release commit for mutt-1.10.1 mutt-1-10-1-rel
Kevin McCarthy [Mon, 16 Jul 2018 16:52:23 +0000 (09:52 -0700)]
automatic post-release commit for mutt-1.10.1

6 years agoCheck outbuf length in mutt_from_base64()
Kevin McCarthy [Fri, 13 Jul 2018 21:25:28 +0000 (14:25 -0700)]
Check outbuf length in mutt_from_base64()

The obuf can be overflowed in auth_cram.c, and possibly auth_gss.c.

Thanks to Jeriko One for the bug report.

6 years agoCheck destlen and truncate in url_pct_encode().
Kevin McCarthy [Fri, 13 Jul 2018 20:05:22 +0000 (13:05 -0700)]
Check destlen and truncate in url_pct_encode().

Thanks to Jeriko One for the patch, which this commit is based upon.

6 years agoVerify IMAP status mailbox literal count size.
Kevin McCarthy [Fri, 13 Jul 2018 19:35:50 +0000 (12:35 -0700)]
Verify IMAP status mailbox literal count size.

Ensure the length isn't bigger than the idata->buf.

Thanks to Jeriko One fo the bug report and patch, which this commit is
based upon.

6 years agoHandle NO response without message properly
JerikoOne [Fri, 13 Jul 2018 19:24:58 +0000 (12:24 -0700)]
Handle NO response without message properly

6 years agoDon't overflow tmp in msg_parse_fetch.
Kevin McCarthy [Fri, 13 Jul 2018 19:15:00 +0000 (12:15 -0700)]
Don't overflow tmp in msg_parse_fetch.

Ensure INTERNALDATE and RFC822.SIZE field sizes fit temp buffer.

Thanks to Jeriko One for the bug report and patch, which this patch is
based upon.

6 years agoSelectively cache headers.
Richard Russon [Fri, 13 Jul 2018 18:33:16 +0000 (11:33 -0700)]
Selectively cache headers.

Thanks to NeoMutt and Jeriko One for the patch, which was slightly
modified to apply to the Mutt code.

6 years agoSanitize POP bcache paths.
Kevin McCarthy [Fri, 13 Jul 2018 18:16:33 +0000 (11:16 -0700)]
Sanitize POP bcache paths.

Protect against bcache directory path traversal for UID values.

Thanks for Jeriko One for the bug report and patch, which this commit
is based upon.

6 years agoEnsure UID in fetch_uidl.
JerikoOne [Fri, 13 Jul 2018 17:47:11 +0000 (10:47 -0700)]
Ensure UID in fetch_uidl.

6 years agoFix buffer size check in cmd_parse_lsub.
Kevin McCarthy [Fri, 13 Jul 2018 04:41:17 +0000 (21:41 -0700)]
Fix buffer size check in cmd_parse_lsub.

The size parameter to url_ciss_tostring() was off by one.

6 years agoFix imap_quote_string() length check errors.
Kevin McCarthy [Fri, 13 Jul 2018 03:46:37 +0000 (20:46 -0700)]
Fix imap_quote_string() length check errors.

The function wasn't properly checking for dlen<2 before quoting, and
wasn't properly pre-adjusting dlen to include the initial quote.

Thanks to Jeriko One for reporting these issues.

6 years agoMerge branch 'stable'
Kevin McCarthy [Sun, 8 Jul 2018 02:34:32 +0000 (19:34 -0700)]
Merge branch 'stable'

6 years agoMention $pgp_decode_command for $pgp_check_gpg_decrypt_status_fd
Kevin McCarthy [Sun, 8 Jul 2018 02:32:57 +0000 (19:32 -0700)]
Mention $pgp_decode_command for $pgp_check_gpg_decrypt_status_fd

It scans $pgp_decode_command for inline and application/pgp mime
types.

6 years agoMerge branch 'stable'
Kevin McCarthy [Sun, 8 Jul 2018 02:18:55 +0000 (19:18 -0700)]
Merge branch 'stable'

6 years agoProperly quote IMAP mailbox names when (un)subscribing.
Kevin McCarthy [Sun, 8 Jul 2018 02:03:44 +0000 (19:03 -0700)]
Properly quote IMAP mailbox names when (un)subscribing.

When handling automatic subscription (via $imap_check_subscribed), or
manual subscribe/unsubscribe commands, mutt generating a "mailboxes"
command but failed to properly escape backquotes.

Thanks to Jeriko One for the detailed bug report and patch, which this
commit is based upon.

6 years agoUpdated French translation.
Vincent Lefevre [Mon, 2 Jul 2018 10:39:14 +0000 (12:39 +0200)]
Updated French translation.

6 years agoAdd dependencies for keymap_alldefs.h in po/Makefile.in.in
Vincent Lefevre [Mon, 2 Jul 2018 10:25:13 +0000 (12:25 +0200)]
Add dependencies for keymap_alldefs.h in po/Makefile.in.in

These dependencies are based on those from Makefile.am and are needed
so that "make update-po" gets the new strings from OPS, etc.

6 years agosmime_handle_entity() cleanup.
Kevin McCarthy [Mon, 2 Jul 2018 03:43:24 +0000 (20:43 -0700)]
smime_handle_entity() cleanup.

Remove redundant NULL assignments after safe_fclose() calls.

Remove some trailing spaces.

smimeout can't be NULL, so remove the check around the output
translation block.

6 years agoVoid passphrase on s/mime decryption error.
Kevin McCarthy [Mon, 2 Jul 2018 03:13:11 +0000 (20:13 -0700)]
Void passphrase on s/mime decryption error.

Model this after pgp's pgp_decrypt_part(), which checks if fpout is
empty.

6 years agoAdd check-stats function to calculate mailbox statistics.
Anton Lindqvist [Fri, 29 Jun 2018 03:17:23 +0000 (20:17 -0700)]
Add check-stats function to calculate mailbox statistics.

This allows the statistics to be updated without setting
$mail_check_stats or before $mail_check_stats_interval has passed.

6 years agoAdd a reference to $copy in the $record documentation.
Kevin McCarthy [Wed, 27 Jun 2018 16:45:10 +0000 (09:45 -0700)]
Add a reference to $copy in the $record documentation.

6 years agoReset all MonitorContext state on context removal.
Kevin McCarthy [Wed, 27 Jun 2018 16:27:05 +0000 (09:27 -0700)]
Reset all MonitorContext state on context removal.

Reset both the descriptor and changed flag when the current context is
removed.  Don't make this dependent on the context being valid or
being found by monitor_resolve(), in case the context was closed due
to some type of error condition.

6 years agoFix MonitorContextDescriptor update on removal.
Kevin McCarthy [Wed, 27 Jun 2018 02:48:25 +0000 (19:48 -0700)]
Fix MonitorContextDescriptor update on removal.

Reset the context descriptor before checking for the monitor being
shared by another mailbox.  Technically, it would be set properly
during the next add, but it shouldn't be left incorrect.

6 years agoWork around open mailbox monitor code check issue.
Kevin McCarthy [Tue, 26 Jun 2018 00:54:43 +0000 (17:54 -0700)]
Work around open mailbox monitor code check issue.

The monitor code is too fast, and can result in all the changes for a
single directory stat update being missed.

Work around this issue by not recording stat time updates when the
check_mailbox() is triggered by the monitor.  This will cause the next
subsequent check to take another look.

6 years agoGenerate error if makedoc is missing a type.
Kevin McCarthy [Mon, 25 Jun 2018 20:13:55 +0000 (13:13 -0700)]
Generate error if makedoc is missing a type.

Add a comment in init.h to remind devs to update makedoc.c when adding
a new type.

Change makedoc to fail on a missing type.  Otherwise it's too easy to
miss the resulting problem in the documentation.

Credit goes to Eike Rathke for noting that it was too easy to forget
to do this, and something should be fixed.  I found his solution a bit
too complicated though, and opted for just adding comment and program
failure.

6 years agoMake make ctags actually work
Eike Rathke [Sat, 23 Jun 2018 08:25:15 +0000 (10:25 +0200)]
Make make ctags actually work

make ctags broke with

Making ctags in po
make[1]: Entering directory '.../mutt/po'
make[1]: *** No rule to make target 'ctags'.  Stop.
make[1]: Leaving directory '.../mutt/po'
Makefile:867: recipe for target 'ctags-recursive' failed
make: *** [ctags-recursive] Error 1

and once fixed the same in intl/

Note that this ctags target scatters tags files over directories.
If you use exuberant ctags then simply run
ctags -R
once in mutt's root dir instead.

6 years agoRemove uninitialized warning for mutt_get_stat_timespec().
Kevin McCarthy [Fri, 22 Jun 2018 03:42:55 +0000 (20:42 -0700)]
Remove uninitialized warning for mutt_get_stat_timespec().

The switch covers all the types, but in some cases the compiler still
complains.  Explicitly set tv_sec = 0 to silence the warning.

6 years agoUpdated Simplified Chinese translation.
Zero King [Tue, 19 Jun 2018 15:16:33 +0000 (15:16 +0000)]
Updated Simplified Chinese translation.

6 years agomutt_atol: better error handling.
Vincent Lefevre [Tue, 19 Jun 2018 07:45:29 +0000 (09:45 +0200)]
mutt_atol: better error handling.

* Detect overflow on negative numbers too (< LONG_MIN).

* Distinguish between format error and number overflow as already
  expected (e.g. for pgp_timeout and smime_timeout).

6 years agoReset errno to 0 before calling strtol and testing it in mutt_atol.
Vincent Lefevre [Tue, 19 Jun 2018 07:37:56 +0000 (09:37 +0200)]
Reset errno to 0 before calling strtol and testing it in mutt_atol.

Otherwise providing LONG_MAX+1 then LONG_MAX gave an error for LONG_MAX too.

6 years agoAllow larger passphrase timeout values
Eike Rathke [Mon, 18 Jun 2018 20:04:47 +0000 (22:04 +0200)]
Allow larger passphrase timeout values

This came up in the comp.mail.mutt newsgroup where a user wasn't
satisfied with the SHORT_MAX seconds ~9 hours limit on passphrase
timeouts.

For the first time made it necessary for the options parser to be
able to parse numbers as long values. Also, introduced
mutt_add_timeout() to detect possible overflow before adding a
timeout to a time_t value and truncate to TIME_T_MAX instead.

6 years agoUpdated French translation.
Vincent Lefevre [Mon, 18 Jun 2018 15:19:31 +0000 (17:19 +0200)]
Updated French translation.

6 years agoMerge branch 'stable'
Kevin McCarthy [Mon, 18 Jun 2018 11:35:24 +0000 (19:35 +0800)]
Merge branch 'stable'

6 years agocrypt-gpgme: prevent crash on bad S/MIME signature
Philipp Gesang [Mon, 18 Jun 2018 09:21:38 +0000 (11:21 +0200)]
crypt-gpgme: prevent crash on bad S/MIME signature

Inform the user about the fingerprint being unavailable instead
of crashing if the S/MIME signature is bad.

6 years agoConvert context and buffy to use nanosecond timestamps.
Kevin McCarthy [Thu, 14 Jun 2018 08:17:56 +0000 (16:17 +0800)]
Convert context and buffy to use nanosecond timestamps.

The inotify interface has an unfortunate side effect of making Mutt
react too quickly to new mail.  Sometimes, the mail is only
half-delivered when the mailbox is checked.  Because Mutt is using the
stat mtime - seconds resolution - this means it won't realize there
are more messages delivered during the same second.

Nanosecond resolution fields were standardized in POSIX.1-2008, so
check for and use those if they are available.

6 years agoUpdated French translation.
Vincent Lefevre [Thu, 14 Jun 2018 07:10:51 +0000 (09:10 +0200)]
Updated French translation.