]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Timo Sirainen [Thu, 19 Aug 2021 10:29:36 +0000 (12:29 +0200)]
lib-storage: Split off index_mail_filter_stream_destroy()
Markus Valentin [Tue, 17 Aug 2021 12:33:56 +0000 (14:33 +0200)]
imapc: Fix crashing when copying nonexistent mails
Check the msgmap before attempting to copy an mail which may has been
expunged already. Fixes:
Panic: file mail-storage.c: line 2385 (mailbox_transaction_commit_get_changes): assertion failed: (ret < 0 || seq_range_count(&changes_r->saved_uids) == save_count || array_count(&changes_r->saved_uids) == 0)
Timo Sirainen [Wed, 18 Aug 2021 12:04:53 +0000 (14:04 +0200)]
lib-storage: Fix assert-crash in special partial mail parsing failures
This happened for example if:
- mail_precache() started parsing mail
- header was parsed, but mail body parsing failed due to mail size mismatch
- vsize parsing doesn't restart header parsing, because header size is already known
- body parsing assert-crashes because there is no messsage parser initialized
Fixes:
Panic: file index-mail.c: line 1290 (index_mail_parse_body): assertion failed: (data->parser_ctx != NULL)
Aki Tuomi [Thu, 12 Aug 2021 09:42:40 +0000 (12:42 +0300)]
lib-oauth2: Add unit test for missing exp field
Aki Tuomi [Thu, 12 Aug 2021 09:40:39 +0000 (12:40 +0300)]
lib-oauth2: Add unit tests for valid tokens
s3lph [Mon, 7 Jun 2021 22:35:13 +0000 (00:35 +0200)]
lib-oauth2-jwt: Remove 'nbf < iat' check, as it's not mandated by RFC7519, and not uncommon to predate the nbf field
Timo Sirainen [Tue, 24 Aug 2021 20:58:59 +0000 (22:58 +0200)]
lib-test: Fix race when subprocess immediately receives signal
Signal could be received before test_subprocess_is_child=1 is set, causing
the subprocess's signal handler to also attempt to cleanup other
subprocesses.
This was causing http-test-client-errors unit tests to fail somewhat
randomly, especially when running them only with 1 CPU.
Timo Sirainen [Tue, 24 Aug 2021 12:02:44 +0000 (15:02 +0300)]
lib: Add test-macros
Timo Sirainen [Mon, 23 Aug 2021 11:21:02 +0000 (14:21 +0300)]
lib: Rewrite POINTER_CAST_TO() to avoid new clang warning
Fixes:
warning: performing pointer subtraction with a null pointer has undefined behavior [-Wnull-pointer-subtraction]
Timo Sirainen [Mon, 23 Aug 2021 11:20:54 +0000 (14:20 +0300)]
dbox: Remove unnecessary variable
The variable was set and updated, but never read.
Timo Sirainen [Mon, 23 Aug 2021 11:20:24 +0000 (14:20 +0300)]
lib-dcrypt: Remove unnecessary variable
The variable was set and updated, but never read.
Martti Rannanjärvi [Mon, 23 Aug 2021 08:46:46 +0000 (11:46 +0300)]
doveadm-dsync: Free ssl_iostream_context on connection failure
Stephan Bosch [Tue, 13 Apr 2021 16:25:06 +0000 (18:25 +0200)]
lib-smtp: smtp-server-cmd-rcpt - Fix assert crash occurring for pipelined MAIL RCPT MAIL sequence.
The assertion is wrong in that it assumes that no MAIL commands can be pending
once RCPT command is next to reply. The RCPT command does not block the
pipeline, so that a subsequent MAIL command can also be pending (but will almost
never succeed).
Stephan Bosch [Tue, 13 Apr 2021 16:25:31 +0000 (18:25 +0200)]
lib-smtp: smtp-server-cmd-data - Add comment to pipeline state assertion.
Stephan Bosch [Thu, 19 Aug 2021 23:19:28 +0000 (01:19 +0200)]
lib-smtp: smtp-server-cmd-data - Remove useless trans != NULL checks.
Siavash Tavakoli [Thu, 19 Aug 2021 16:06:42 +0000 (17:06 +0100)]
dict-sql: Fail early if there's unexpected number of bind arguments for iter
Otherwise, lib-sql raises a panic.
Timo Sirainen [Tue, 17 Aug 2021 13:23:31 +0000 (15:23 +0200)]
lib: istreams - Make sure freeing snapshots can't access freed parent istream memory
This happened after the recent istream-header-filter snapshot changes.
Timo Sirainen [Wed, 18 Aug 2021 17:49:43 +0000 (19:49 +0200)]
imap: Fix mailbox leak if MOVE can't open the source mailbox
Broken by
143b7c2b412ed8f155e812603fda81886bec466e
Fixes:
Panic: file mail-user.c: line 229 (mail_user_deinit): assertion failed: ((*user)->refcount == 1)
Siavash Tavakoli [Wed, 18 Aug 2021 12:54:39 +0000 (13:54 +0100)]
lib-lua: Don't include lua_resume_compat() for 5.1
lua_resume() is not supported in 5.1, so don't try to add a
compatibility function that fails compilation.
Timo Sirainen [Tue, 25 May 2021 16:26:14 +0000 (19:26 +0300)]
lib: Remove unused event_filter_add()
Timo Sirainen [Mon, 16 Aug 2021 14:13:27 +0000 (17:13 +0300)]
lib: test-event-filter - Replace event_filter_add() with event_filter_parse()
Timo Sirainen [Mon, 24 May 2021 20:57:13 +0000 (23:57 +0300)]
lib: Add comments to event-related code
Timo Sirainen [Mon, 24 May 2021 19:26:27 +0000 (22:26 +0300)]
lib: event_want_level() - Minor code cleanup
event_want_log_level() internally does both of these checks, so it's enough
to just check its return value.
Timo Sirainen [Tue, 17 Aug 2021 09:12:18 +0000 (12:12 +0300)]
lib-fs: Fix fs_stats.copy_count tracking with fs_default_copy()
The copy_count could have been decreased too many times with async
operations.
Timo Sirainen [Mon, 16 Aug 2021 12:36:37 +0000 (15:36 +0300)]
global: Add ATTR_UNSIGNED_WRAPS to fix various ubsan issues
Timo Sirainen [Thu, 5 Aug 2021 15:53:57 +0000 (18:53 +0300)]
global: Fix various ubsan issues
Timo Sirainen [Tue, 17 Aug 2021 07:59:49 +0000 (10:59 +0300)]
doveadm: Free memory for all loaded mail_plugins at deinit
Timo Sirainen [Tue, 17 Aug 2021 07:50:34 +0000 (10:50 +0300)]
doveadm pw -l: Free all memory to avoid memory leak complaints
Timo Sirainen [Tue, 17 Aug 2021 07:30:25 +0000 (09:30 +0200)]
doveadm batch: Fix memory leak
Timo Sirainen [Tue, 17 Aug 2021 08:06:36 +0000 (11:06 +0300)]
doveadm: Split off doveadm_mail_cmd_deinit()
Timo Sirainen [Fri, 7 May 2021 18:15:04 +0000 (21:15 +0300)]
doveadm: Make doveadm_mail_cmd_free() public
Siavash Tavakoli [Fri, 13 Aug 2021 10:08:30 +0000 (11:08 +0100)]
global: Use consistent lua function names
Change lua-style function names to be consistent with dovecot's style.
Siavash Tavakoli [Thu, 12 Aug 2021 18:43:25 +0000 (19:43 +0100)]
lib-lua: test-lua: Fix the test for lua versions later than 5.3
Siavash Tavakoli [Thu, 12 Aug 2021 18:40:22 +0000 (19:40 +0100)]
lib-lua: Add lua_resume_compat() and use it in lua versions prior to 5.4
Starting lua 5.4 "lua_resume()" expects an extra "nresults" argument. Add a
compatibility function to handle this argument in earlier versions.
Felipe Gasper [Sun, 24 May 2020 18:47:18 +0000 (14:47 -0400)]
man: Document command/args destination format to sync/backup.
Timo Sirainen [Mon, 16 Aug 2021 11:52:50 +0000 (14:52 +0300)]
lib-compression: istream-lz4 - Fix handling partial header reads
Reading assert-crashed if the header was read only partially. Either
because the file really was truncated or because parent stream already
had fewer bytes buffered.
Timo Sirainen [Mon, 16 Aug 2021 11:51:29 +0000 (14:51 +0300)]
lib-compression: istream-lz4 - Remove redundant check
The loop is reached only if ret is 0, so there's no need to check it again.
Timo Sirainen [Mon, 16 Aug 2021 11:50:10 +0000 (14:50 +0300)]
lib-compression: istream-lz4 - Add asserts to make sure parent buffer isn't full
The parent buffer's max size would have to be tiny for these to happen.
Siavash Tavakoli [Thu, 1 Jul 2021 12:52:29 +0000 (13:52 +0100)]
dict: Use dict-init-cache
Make use of dict-init-cache for initialization and deinitialization of dicts.
Siavash Tavakoli [Fri, 25 Jun 2021 13:11:52 +0000 (14:11 +0100)]
dict: Add caching mechanism for initializing dicts
Add a pool for dict instances. Each dict is refcounted and given a grace period
of 30 seconds for deletion. If refcount drops to 0 and no new dict
operation uses the instance in that period, it will be freed. A maximum
of 10 dicts are kept in the cache.
Siavash Tavakoli [Sun, 8 Aug 2021 23:35:09 +0000 (00:35 +0100)]
dict: Add dict_created and dict_destroyed events
Inherit from dict.event and emitted at dict initialization/deinit.
Martti Rannanjärvi [Sun, 15 Aug 2021 09:45:12 +0000 (12:45 +0300)]
lib-sasl: test-sasl-client.c - Initialize authid of sasl_empty_set
This fixes the compiler warning:
test-sasl-client.c:8:1: error: missing initializer for field 'authid'
of 'const struct dsasl_client_settings'
Martti Rannanjärvi [Sun, 15 Aug 2021 04:12:42 +0000 (07:12 +0300)]
lib-sasl: oauthbearer - Fix memory leak on auth failure
Aki Tuomi [Wed, 11 Aug 2021 06:48:06 +0000 (09:48 +0300)]
lib-sasl: Add unit tests
Aki Tuomi [Wed, 11 Aug 2021 06:59:05 +0000 (09:59 +0300)]
lib-sasl: Do not crash if password is NULL
Aki Tuomi [Wed, 11 Aug 2021 06:47:17 +0000 (09:47 +0300)]
lib-sasl: When setting port, parse value, not key.
Broken in
228f1e8d583
Aki Tuomi [Wed, 11 Aug 2021 05:49:44 +0000 (08:49 +0300)]
auth: Do not forward empty "master" passdb field
Aki Tuomi [Wed, 11 Aug 2021 05:48:29 +0000 (08:48 +0300)]
login-common: Ignore empty value for "master" passdb extra field
Siavash Tavakoli [Tue, 10 Aug 2021 11:26:14 +0000 (12:26 +0100)]
mail-crypt: Add password confirmation for doveadm cryptokey password command
To prevent setting wrong passwords by accident.
Siavash Tavakoli [Tue, 10 Aug 2021 11:23:55 +0000 (12:23 +0100)]
mail-crypt: Fix -O argument type for doveadm cryptokey password command
Should be boolean instead of string.
Timo Sirainen [Tue, 27 Apr 2021 23:01:14 +0000 (02:01 +0300)]
lib-index: Fix "Extension introduction for unknown id" errors after map is generated
This happens when:
* View is opened
* Messages are expunged
* View is synced with NOEXPUNGES flag
* A new extension is introduced
* Index is rotated at least twice
* View is again synced with NOEXPUNGES flag
* More changes are done to index with the new extension
* Once more view is synced with NOEXPUNGES flag
The last sync will see changes with the new extension ID, but the view's map
doesn't know its ID.
Josef 'Jeff' Sipek [Thu, 24 Jun 2021 16:58:58 +0000 (12:58 -0400)]
virtual: Expunge old emails if backend box guid changed
This introduces a new extensible "ext2" header to make it easier to add new
fields in the future. It also allows keeping backwards/forwards
compatibility with the old code, so the virtual index isn't rebuilt on
upgrades or downgrades.
Timo Sirainen [Thu, 29 Jul 2021 09:38:12 +0000 (12:38 +0300)]
virtual: Don't use data stack when building extension header
Some users may have thousands of mailboxes, which grows the data stack
unnecessarily large.
Timo Sirainen [Mon, 9 Aug 2021 10:01:12 +0000 (13:01 +0300)]
indexer: Fix crash if client disconnects while it's waiting for command reply
This happened for example if IMAP SEARCH triggered long fts indexing and the
IMAP client disconnected while waiting for the reply.
Broken by
f62a25849358e40a08a2c47f5bcaa1613a31d076
Stephan Bosch [Thu, 6 May 2021 09:58:21 +0000 (11:58 +0200)]
lib-smtp: smtp-server-cmd-data - Fix global state cleanup upon DATA command destroy.
Should cleanup global state only when it belongs to the DATA/BDAT command
currently being destroyed.
Fixes NULL-dereference in i_stream_read() found by OSS-Fuzz.
Stephan Bosch [Thu, 5 Aug 2021 09:38:26 +0000 (11:38 +0200)]
lib-smtp: test-smtp-server-errors - Perform "Bad pipelined DATA" test with actual pipelining.
Timo Sirainen [Tue, 3 Aug 2021 16:47:54 +0000 (19:47 +0300)]
imap, pop3: Prevent reading ssl_ca setting into memory
Especially with imap there can be a lot of processes and a large ssl_ca
could be wasting a lot of memory. This was already the old behavior before
removing ssl_* settings from lib-storage.
Timo Sirainen [Tue, 3 Aug 2021 16:46:59 +0000 (19:46 +0300)]
config: Add exclude=<name> settings to drop specific settings
Timo Sirainen [Thu, 29 Jul 2021 15:04:53 +0000 (18:04 +0300)]
lib-storage: Remove SSL settings from mail_storage_settings
They can be accessed via master_service_ssl_settings instead.
Timo Sirainen [Thu, 29 Jul 2021 15:02:57 +0000 (18:02 +0300)]
lib-storage: mail_user_init_ssl_client_settings() - Use master_service_ssl_settings
This will allow dropping the duplicate SSL settings handling.
Timo Sirainen [Thu, 29 Jul 2021 14:45:16 +0000 (17:45 +0300)]
dsync: Get SSL settings via master_service_ssl_settings
Timo Sirainen [Thu, 29 Jul 2021 14:44:43 +0000 (17:44 +0300)]
lib-storage: Add mail_storage_service_user_get_ssl_settings()
Timo Sirainen [Thu, 29 Jul 2021 14:44:25 +0000 (17:44 +0300)]
lib-master: Add master_service_ssl_settings_get_from_parser()
Timo Sirainen [Thu, 29 Jul 2021 14:57:42 +0000 (17:57 +0300)]
global: Don't zero SSL settings unnecessarily
mail_user_init_ssl_client_settings() and mail_user_init_fs_settings()
will clear them again anyway.
Timo Sirainen [Thu, 29 Jul 2021 14:58:23 +0000 (17:58 +0300)]
lib-storage: mail_user_init_fs_settings() - Clarify that ssl settings are fully initialized
Timo Sirainen [Thu, 29 Jul 2021 14:57:12 +0000 (17:57 +0300)]
lib-storage: mail_user_init_ssl_client_settings() - Clarify that ssl settings are fully initialized
Timo Sirainen [Thu, 29 Jul 2021 12:31:56 +0000 (15:31 +0300)]
doveadm: Free SSL iostream contexts at deinit
This wasn't really a memory leak, because the contexts are always kept
allocated until deinit anyway.
Timo Sirainen [Thu, 29 Jul 2021 13:06:50 +0000 (16:06 +0300)]
lib-ssl-iostream: ssl_iostream_context_unref(NULL) is a no-op
Timo Sirainen [Sat, 7 Aug 2021 16:52:09 +0000 (18:52 +0200)]
man: doveadm-pw - Fix default scheme to be CRYPT / $2y$ bcrypt
Timo Sirainen [Thu, 22 Jul 2021 12:31:11 +0000 (15:31 +0300)]
lib-index: Remove mail_index_transaction_get_highest_modseq()
This isn't actually used anywhere, so there's no need to keep it.
Timo Sirainen [Thu, 22 Jul 2021 12:28:39 +0000 (15:28 +0300)]
lib-index: mail_index_transaction_get_highest_modseq() - Fix handling MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ
MAIL_INDEX_MAIL_FLAG_UPDATE_MODSEQ flag updates didn't calculate the
returned modseq correctly. This function wasn't used outside
--with-devel-checks though, but with it this fixes:
Panic: file mail-index-transaction.c: line 212 (mail_index_transaction_commit_real): assertion failed: (t->reset || expected_highest_modseq == log->head->sync_highest_modseq)
Timo Sirainen [Thu, 22 Jul 2021 11:24:11 +0000 (14:24 +0300)]
lib-index: Avoid modseq warnings --with-devel-checks
Avoids warnings:
Requested highest-modseq for transaction, but modseq tracking isn't enabled for the file (this shouldn't happen)
Timo Sirainen [Thu, 22 Jul 2021 11:29:24 +0000 (14:29 +0300)]
director: Avoid calling timeval_diff_msecs() with too great time difference
Fixes assert-crash --with-devel-checks:
Panic: file time-util.c: line 76 (timeval_diff_msecs): assertion failed: (diff <= INT_MAX)
Aki Tuomi [Wed, 14 Jul 2021 07:00:28 +0000 (10:00 +0300)]
lib: data-stack - Initialize alloc_count / alloc_bytes
This has only effect with devel checks enabled. Fixes counter
values to show sensible data.
Aki Tuomi [Tue, 13 Jul 2021 10:41:14 +0000 (13:41 +0300)]
lib: data-stack - Allow errno changes when sending event
Timo Sirainen [Thu, 29 Jul 2021 19:21:52 +0000 (22:21 +0300)]
lib-master, global: Remove unnecessary MASTER_SERVICE_FLAG_USE_SSL_SETTINGS
SSL client settings are now always read.
Timo Sirainen [Thu, 29 Jul 2021 19:20:17 +0000 (22:20 +0300)]
lib-master: Use ssl-server settings only when necessary
Timo Sirainen [Thu, 29 Jul 2021 19:18:56 +0000 (22:18 +0300)]
lib-master: Remove unused master_service_is_ssl_module_loaded()
Timo Sirainen [Thu, 29 Jul 2021 18:45:18 +0000 (21:45 +0300)]
lib-master, login-common: Split off master_service_ssl_server_settings
Timo Sirainen [Thu, 29 Jul 2021 18:43:03 +0000 (21:43 +0300)]
lib-master, global: Split master_service_ssl_settings_to_iostream_set() to client/server functions
Timo Sirainen [Thu, 5 Aug 2021 14:48:42 +0000 (17:48 +0300)]
master: Avoid creating prefork timeout if process_limit is already reached
Timo Sirainen [Thu, 5 Aug 2021 14:53:58 +0000 (17:53 +0300)]
master: Avoid high CPU usage when process_min_avail reaches process_limit
process_min_avail handling always created a 0ms timeout to try to create the
missing processes. This timeout was supposed to stop when it couldn't launch
all the wanted processes, but the check wasn't done right. This ended up
causing the timeout to be called rapidly over and over again.
Michael M Slusarz [Thu, 22 Jul 2021 20:51:05 +0000 (14:51 -0600)]
lazy_expunge: Add lazy_expunge_exclude setting
This allows mailboxes to be excluded via configuration.
Timo Sirainen [Tue, 3 Aug 2021 14:38:33 +0000 (17:38 +0300)]
fts: Use mailbox-match-plugin API for fts_autoindex_exclude
This doesn't change the functionality, just deduplicates the code.
Timo Sirainen [Wed, 4 Aug 2021 12:50:54 +0000 (15:50 +0300)]
fts: Always initialize struct fts_user
Initializing lib-fts is still optional within it.
Michael M Slusarz [Thu, 22 Jul 2021 20:20:25 +0000 (14:20 -0600)]
lib-storage: Add mailbox exclusion plugin API
Allows mailbox exclusion configuration to be easily added to any
plugin.
Timo Sirainen [Wed, 4 Aug 2021 16:57:35 +0000 (19:57 +0300)]
master: Fix unfinished "time moved backwards" comment
Timo Sirainen [Wed, 4 Aug 2021 16:54:29 +0000 (19:54 +0300)]
master: Log a warning also about "time moved forwards"
This isn't really important to know, but it could help figure out
performance problems if it happens a lot.
Timo Sirainen [Wed, 4 Aug 2021 16:52:14 +0000 (19:52 +0300)]
lib: ioloop - Handle "time moved forwards" only after 100ms difference
Previously this was done after even a single microsecond difference,
causing it to happen almost constantly. This was causing performance
problems when there were many timeouts that had to be updated. Especially
master process could have been spending a lot of time unnecessarily here.
Broken by
b258137d0e0618ae792e3606071a1715d26f107b
Timo Sirainen [Wed, 4 Aug 2021 16:55:36 +0000 (19:55 +0300)]
lib: ioloop - Fix 0 timeout with kqueue() and select()
With these it was waiting for 1 ms instead of 0.
Broken by
fac27f192d8432c45d360025613f7d432271c5bb
Timo Sirainen [Wed, 4 Aug 2021 14:24:00 +0000 (17:24 +0300)]
fts: Fix internal error when fts_index_timeout is set
Broken by
cf114f90e0ba25c18db846ee582e3a130bd52949
Timo Sirainen [Tue, 3 Aug 2021 13:11:35 +0000 (16:11 +0300)]
acl: Cast enums explicitly to int in sorting function
Fixes ubsan complaint:
runtime error: unsigned integer overflow: 0 - 4 cannot be represented in type 'unsigned int'
Stephan Bosch [Tue, 29 Jun 2021 20:45:33 +0000 (22:45 +0200)]
lib-program-client: program-client-remote - Fix signed integer arithmetic.
Make type cast explicit to gain ubsan approval. Also prevent negative
reserve_mod from having unexpected effect.
Martti Rannanjärvi [Tue, 3 Aug 2021 08:44:06 +0000 (11:44 +0300)]
util: dovecot-sysreport - Fix help to have -o as the short form of --core
Martti Rannanjärvi [Tue, 3 Aug 2021 07:56:08 +0000 (10:56 +0300)]
util: dovecot-sysreport - Use only spaces for indentation
Stop mixing tabs and spaces.
Timo Sirainen [Tue, 27 Jul 2021 17:13:24 +0000 (20:13 +0300)]
stats: Revert the previous OpenMetrics info type revert
The OpenMetrics standard does support "info" type. The original Prometheus
format doesn't support it, but our support is for OpenMetrics. They don't
even have any overlapping types that could be used for this, so the only
other possibility would have been to make this configurable.
Reverts
55a519d18fbbb8435854f1fcf2642b908d6fc074
Timo Sirainen [Wed, 28 Jul 2021 13:39:59 +0000 (16:39 +0300)]
submission-login: Fix compiling error with some older compilers
Stephan Bosch [Sun, 4 Jul 2021 22:37:46 +0000 (00:37 +0200)]
submission-login: submission-proxy - Optionally send XCLIENT LOGIN to backend and skip authentication.
This behavior is enabled by returning proxy_noauth from passdb.
Stephan Bosch [Sun, 18 Jul 2021 22:29:23 +0000 (00:29 +0200)]
login-common: Add proxy field proxy_noauth.
Stephan Bosch [Sun, 18 Jul 2021 22:24:32 +0000 (00:24 +0200)]
submission-login: submission-proxy - Move submission_proxy_success_reply_sent().