]>
git.ipfire.org Git - thirdparty/dovecot/core.git/log
Siavash Tavakoli [Wed, 26 May 2021 11:15:06 +0000 (12:15 +0100)]
dict: Drop support for multi-path iteration in dict protocol
Remove dict_iterate_init_multiple() since it is not used anywhere. Also
drop support in dict protocol to read multiple paths.
Siavash Tavakoli [Tue, 18 May 2021 00:50:03 +0000 (01:50 +0100)]
lib-dict: Add dict_op_settings_dup() and dict_op_settings_private_free()
- dict_op_settings_dup() creates a copy of dict_op_settings into a new
struct dict_dop_settings_private.
- dict_op_settings_private_free() frees the memory for copied object.
Siavash Tavakoli [Mon, 3 May 2021 14:09:49 +0000 (15:09 +0100)]
lib-dict: Add dict_op_settings parameter for dict_iterate_init()
Only adds the parameter, doesn't use it.
Siavash Tavakoli [Mon, 3 May 2021 14:09:01 +0000 (15:09 +0100)]
lib-dict: Add dict_op_settings parameter for dict_transaction_begin()
Only adds the parameter, doesn't use it.
Siavash Tavakoli [Mon, 3 May 2021 12:42:56 +0000 (13:42 +0100)]
lib-dict: Add dict_op_settings
Used for dict operations. Currently username & home_dir are used. Also, change
dict_lookup() to accept a parameter of this type but don't actually use it.
Siavash Tavakoli [Mon, 3 May 2021 11:15:54 +0000 (12:15 +0100)]
lib-dict: Remove dict_settings.value_type
It was originally added to dict-db and no other backend uses it. With dict-db
removed, there is no need to keep it.
Siavash Tavakoli [Wed, 12 May 2021 11:54:30 +0000 (12:54 +0100)]
dict-client: Escape username and dict uri in handshake HELLO message
Siavash Tavakoli [Fri, 30 Apr 2021 13:42:46 +0000 (14:42 +0100)]
lib-dict-backen: Drop unused dict-db
Josef 'Jeff' Sipek [Thu, 24 Jun 2021 16:56:05 +0000 (12:56 -0400)]
virtual: Expunge old emails if backend box uidvalidity changed
Timo Sirainen [Mon, 14 Jun 2021 20:28:48 +0000 (23:28 +0300)]
doveadm-server: Don't return two error lines if a command fails
This normally didn't affect doveadm client usage, but it did break reply
matching when multiple usernames were handled by a single command (e.g.
wildcard users).
Timo Sirainen [Thu, 10 Dec 2020 08:44:42 +0000 (10:44 +0200)]
lib-http: test-http-client-errors - Don't rely on sleeps
Use the notification signal API instead. Also it's only one test (group)
that needs to do this.
Timo Sirainen [Fri, 18 Jun 2021 11:19:36 +0000 (14:19 +0300)]
lib-test: Add notification signal send/wait API
This allows a simple way for child/parent processes to communicate when
they're ready. SIGHUP signal is reserved for this.
Timo Sirainen [Thu, 10 Dec 2020 08:54:25 +0000 (10:54 +0200)]
doveadm batch: Fix assert-crash that happened when it was attempted to be used
Fixes:
Panic: file mail-storage.c: line 1067 (mailbox_set_reason): assertion failed: (reason != NULL)
Markus Valentin [Fri, 25 Jun 2021 12:52:11 +0000 (14:52 +0200)]
lib-fs: metawrap - Fix handling empty file
As empty files are already closed when fs-metawrap attempts to append
metadata there have been problems with size calculation. Fix this by
relying on the same mechanism as if metadata changed during write.
This recreates metadata and keeps old body. This fixes an issue when
writing empty mails to cache (failed: Cached message size larger than
expected).
This was introduced by
03e102ddccaae9e944c503d4269de755731798e8a
Markus Valentin [Fri, 25 Jun 2021 12:28:57 +0000 (14:28 +0200)]
lib-fs: fs-metawrap - Expect fs_stat to return size 0 for empty file
Timo Sirainen [Mon, 14 Jun 2021 09:47:15 +0000 (12:47 +0300)]
NEWS: Updates for v2.3.15
Aki Tuomi [Mon, 24 May 2021 11:03:57 +0000 (14:03 +0300)]
NEWS: Add news for 2.3.14.1
Stephan Bosch [Fri, 21 May 2021 22:16:38 +0000 (00:16 +0200)]
lib-smtp: smtp-server-connection - Fix STARTTLS command injection vulnerability.
The input handler kept reading more commands even though the input was locked by
the STARTTLS command, thereby causing it to read the command pipelined beyond
STARTTLS. This causes a STARTTLS command injection vulerability.
Aki Tuomi [Tue, 8 Jun 2021 06:13:25 +0000 (09:13 +0300)]
lib-dict-extra: dict-fs - Escape unsafe paths
Change any path components that are `.` or `..` to `...` and `....`.
Prevents path traversal attacks.
Aki Tuomi [Tue, 8 Jun 2021 06:04:21 +0000 (09:04 +0300)]
lib-oauth2: Do not escape '.'
This is not really needed and just makes things difficult.
Aki Tuomi [Mon, 3 May 2021 06:58:29 +0000 (09:58 +0300)]
lib-oauth2: Add missing test_begin/test_end to token escape
Aki Tuomi [Wed, 14 Apr 2021 16:17:30 +0000 (19:17 +0300)]
lib-oauth2: test-oauth2-jwt - Fix linkage for openssl
Without whole archive option ssl_iostream_unref isn't
included in linkage, which will prevent libdcrypt from
loading openssl backend.
Aki Tuomi [Thu, 19 Nov 2020 17:55:42 +0000 (19:55 +0200)]
lib-oauth2: Ensure azp is escaped too
Aki Tuomi [Wed, 14 Apr 2021 10:47:16 +0000 (13:47 +0300)]
lib-oauth2: Add test for token escape
Aki Tuomi [Wed, 14 Apr 2021 11:12:16 +0000 (14:12 +0300)]
lib-oauth2: Improve identifier escaping function
Aki Tuomi [Sat, 10 Apr 2021 14:54:45 +0000 (17:54 +0300)]
lib-oauth2: Move identifier escaping to own function
Timo Sirainen [Thu, 25 Mar 2021 13:36:49 +0000 (15:36 +0200)]
lib-storage: Sync mailbox if autoexpunging finds mails that are already expunged
The syncing should remove the mails from the index.
Timo Sirainen [Thu, 25 Mar 2021 13:34:14 +0000 (15:34 +0200)]
lib-storage: Fix infinite loop in autoexpunging if the mails are already expunged
This happens if the mails exist in the index, but mail_get_save_date()
fails with MAIL_ERROR_EXPUNGED.
Aki Tuomi [Mon, 31 May 2021 11:48:42 +0000 (14:48 +0300)]
plugins/fts: Use event logging
Aki Tuomi [Wed, 26 May 2021 10:55:52 +0000 (13:55 +0300)]
plugins/fts: fts-indexer - Use connection.c functions
Aki Tuomi [Mon, 31 May 2021 16:31:35 +0000 (19:31 +0300)]
plugins/fts: fts-indexer - Move fts_indexer_init to end of file
Simplifies next commit
Aki Tuomi [Wed, 26 May 2021 10:54:56 +0000 (13:54 +0300)]
plugins/fts: fts-indexer - Use connection structures
Aki Tuomi [Thu, 6 May 2021 11:55:55 +0000 (14:55 +0300)]
indexer: worker - Fix busy/free status
Determining whether worker is free or not should be determined
using worker_connection_is_busy, not whether there are
connections in the list.
A worker connection is busy when it has a request.
Aki Tuomi [Thu, 6 May 2021 09:54:15 +0000 (12:54 +0300)]
indexer: indexer-client - Use connection.c functions
Aki Tuomi [Thu, 6 May 2021 09:41:39 +0000 (12:41 +0300)]
indexer: indexer-client - Use connection structure
Aki Tuomi [Thu, 6 May 2021 09:08:39 +0000 (12:08 +0300)]
indexer: indexer-worker - Use event logging
Aki Tuomi [Thu, 6 May 2021 09:03:16 +0000 (12:03 +0300)]
indexer: indexer-worker: Use connection.c functions
Aki Tuomi [Thu, 6 May 2021 08:42:37 +0000 (11:42 +0300)]
indexer: indexer-worker: Use connection structure
Aki Tuomi [Thu, 6 May 2021 08:21:43 +0000 (11:21 +0300)]
indexer: worker-connection - Use connection.c functions
Aki Tuomi [Thu, 6 May 2021 07:59:24 +0000 (10:59 +0300)]
indexer: worker-connection - Prepare for using connection.c
Aki Tuomi [Thu, 6 May 2021 07:56:40 +0000 (10:56 +0300)]
indexer: worker-pool - Use connection_list
Aki Tuomi [Thu, 6 May 2021 07:49:23 +0000 (10:49 +0300)]
indexer: worker-pool - Remove unused last_use
Aki Tuomi [Thu, 6 May 2021 07:29:23 +0000 (10:29 +0300)]
indexer: worker-connection - Use connection.h structures
Aki Tuomi [Thu, 6 May 2021 07:11:54 +0000 (10:11 +0300)]
indexer: worker-connection - Move constructor further down
Simplifies next commit
Aki Tuomi [Thu, 6 May 2021 07:11:24 +0000 (10:11 +0300)]
Reformat worker-connection.c
Aki Tuomi [Tue, 25 May 2021 07:38:46 +0000 (10:38 +0300)]
lib: lib-event - Copy ru_last when making passthrough event
Otherwise user_cpu_usecs does not get added to the sent events.
Aki Tuomi [Thu, 6 May 2021 11:29:03 +0000 (14:29 +0300)]
master: Fix idle-kill for processes with a single short-lived client
lib-master sends unimportant service status updates to master only once per
second when client_limit>1, because within that 1 second the available client
count may have already changed many times. Normally this is fine, but there's a
problem with the initial client:
* The client connection launches a new process
* The process sends the initial status notification with available_count=MAX
* The client connection is handled, but because the status notification was
just sent, the update won't be sent until 1 second later
* The client disconnects within the 1 second
* The available_count is again MAX, so no status notification is sent
In this situation the master process never created the idle-kill timeout.
Usually the following clients will cause a status notification to be sent, but
if there was only the one client then this process won't be idle-killed. Fix the
situation so that the idle-kill timeout is created already by the initial status
notification.
Timo Sirainen [Thu, 3 Jun 2021 16:04:26 +0000 (19:04 +0300)]
lib: Add array_foreach_reverse[_modifiable]()
This is especially useful when deleting multiple elements inside the loop.
Timo Sirainen [Thu, 3 Jun 2021 13:50:39 +0000 (16:50 +0300)]
lib: Don't use special code for i_unreached() with STATIC_CHECKER
This was done originally to help scan-build, but this is no longer
necessary. Also actually running code where __builtin_unreachable() was
reached produced (very weird) undefined behavior.
Reverts
e2e9ea6da9f3db5fd7fe467db79232d20d03832f
Timo Sirainen [Thu, 3 Jun 2021 13:48:36 +0000 (16:48 +0300)]
Makefile.am: Update configure parameters for scan-build
Especially add --enable-static-checker.
Timo Sirainen [Fri, 4 Jun 2021 09:46:53 +0000 (12:46 +0300)]
lib-imap: imap-parser - Parse literal size using as same algorithm as str_parse*().
This prevents wrapping the integer value and fixes an ubsan complaint.
Based on Stephan's similar patch in managesieve-parser.
Timo Sirainen [Fri, 4 Jun 2021 09:45:08 +0000 (12:45 +0300)]
lib-imap: imap-parser - Fix 8 bit atom check to use unsigned char.
Timo Sirainen [Fri, 20 Nov 2020 09:56:41 +0000 (11:56 +0200)]
lib-http: Add http-client category to client events
Markus Valentin [Wed, 2 Jun 2021 10:39:39 +0000 (12:39 +0200)]
acl: Ignore acls in acl_mailbox_right_lookup if ignore_acls is set
In case an namespace has been configured to ignore ACLs make sure that
also happens for acl_mailbox_right_lookup.
Markus Valentin [Tue, 1 Jun 2021 11:10:23 +0000 (13:10 +0200)]
acl: If acl_ignore_namespace is set acl_backend can be NULL
Allow an uninitialized acl backend when ignore_acls is set.
Timo Sirainen [Tue, 25 May 2021 17:03:53 +0000 (20:03 +0300)]
lib-mail: Add MESSAGE_PART_FLAG_OVERFLOW to MIME parts that reached parsing limits
This allows callers to find out which MIME parts were properly parsed.
Timo Sirainen [Thu, 29 Apr 2021 14:00:47 +0000 (17:00 +0300)]
imap: copy: Abort if client disconnects during COPY
Since the client didn't receive the COPY tagged reply, it doesn't know
whether the COPY succeeded or not. This likely causes it to try the COPY
again and duplicate the mails.
Splintermail Dev [Wed, 19 May 2021 11:56:13 +0000 (05:56 -0600)]
imap: imap-sync - Fix VANISHED response with UID=1
Fixes a bug introduced in
4eb3f6f27 , where a UID EXPUNGE 1 command
resulted in a VANSIHED 0:1 response, which is invalid IMAP syntax
(sequence sets must have nonzero values).
Aki Tuomi [Mon, 17 May 2021 09:13:16 +0000 (12:13 +0300)]
fts: Do not consider arbitrary headers with 8-bit data as language-specific
If we do stemming etc processing for arbitrary headers, they might
become impossible to find in subsequent searches due to stemming.
This practically breaks e.g. From/To header searches with non-ascii
names.
Timo Sirainen [Mon, 9 Mar 2020 09:11:04 +0000 (11:11 +0200)]
lib: DEBUG: Fix potential crash in handling "Growing data stack" debug message
This could have only happened when data_stack_grow event was enabled and
when --enable-devel-checks was used.
Timo Sirainen [Thu, 27 May 2021 08:18:05 +0000 (11:18 +0300)]
lib: test-data-stack: Run each test with the same data stack state
Timo Sirainen [Fri, 21 May 2021 13:59:17 +0000 (16:59 +0300)]
lib-lua: Delay running Lua script until dlua_script_init()
This allows the caller to register globals before running the script.
Timo Sirainen [Fri, 21 May 2021 13:58:01 +0000 (16:58 +0300)]
lib-lua: Move finalizing event and setting linked list to dlua_create_script()
There's no need to delay them until dlua_script_create_finish().
Timo Sirainen [Fri, 21 May 2021 14:48:48 +0000 (17:48 +0300)]
lib-lua: Update dlua_script_create_*() comment
Reusing existing scripts wasn't actually implemented.
Timo Sirainen [Fri, 21 May 2021 14:06:37 +0000 (17:06 +0300)]
lib-lua: dlua_script_init() - Always return -1 if script_init() fails
The previous behavior was to forward the script_init() return value to
the caller. This was somewhat unexpected behavior.
Timo Sirainen [Mon, 31 May 2021 08:33:40 +0000 (11:33 +0300)]
lib-storage: dlua_register_mail_storage() - Fix popping dlua_dovecot in Lua stack
Timo Sirainen [Fri, 7 May 2021 17:37:02 +0000 (20:37 +0300)]
lib-storage: Fix corrupted cache when adding attachment keywords
If IMAP BODYSTRUCTURE parsing fails, it means the BODYSTRUCTURE doesn't
match the MIME parts. This likely means that one or both of them are
corrupted. Handle this by deleting the email from cache, so this error
won't keep repeating.
Timo Sirainen [Fri, 7 May 2021 17:28:03 +0000 (20:28 +0300)]
lib-storage: Don't log error if attachment flags couldn't be set due to missing cache
Ever since
194dcaa65cdd247393633f2daa4b40fd12985440 missing attachment
keywords have been attempted to be automatically added if all the necessary
fields are in dovecot.index.cache. However, if mime.parts wasn't in the
cache an error was unnecessarily logged.
Fixes:
Error: Failed to add attachment keywords: mail_get_parts() failed: Mail field not cached
Markus Valentin [Fri, 21 May 2021 11:53:02 +0000 (13:53 +0200)]
imap-acl: In case mailbox name is "" set it to INBOX for shared namespaces
To prevent proxying ACL commands with mailbox "" replace it with "INBOX"
when used with shared namespaces.
Markus Valentin [Tue, 25 May 2021 14:09:25 +0000 (16:09 +0200)]
imapc: Extract imapc_mailbox_name_equals from imapc_untagged_status
Markus Valentin [Thu, 20 May 2021 14:03:12 +0000 (16:03 +0200)]
imap-acl: Replace mailbox_open_as_admin with mailbox_open_allocated_as_admin
Markus Valentin [Thu, 20 May 2021 12:27:46 +0000 (14:27 +0200)]
imap-acl: Allow LISTRIGHT replies without opening as admin
As the reply is hardcoded there is no need to proxy the ACL
command to a remote backend in case imapc_feature "acl" is
enabled.
Markus Valentin [Wed, 19 May 2021 13:12:35 +0000 (15:12 +0200)]
imap-acl: Implement proxying commands to an imapc location for DELETEACL
Before calling imap_acl_cmd_deleteacl in cmd_deleteacl the new code
checks if the command should be proxied and if so, does the proxying.
Markus Valentin [Wed, 19 May 2021 13:11:40 +0000 (15:11 +0200)]
imap-acl: Implement proxying commands to an imapc location for SETACL
Before calling imap_acl_cmd_setacl in cmd_setacl the new code checks if
the command should be proxied and if so, does the proxying.
Markus Valentin [Wed, 19 May 2021 13:09:24 +0000 (15:09 +0200)]
imap-acl: Implement proxying commands to an imapc location for GETACL
Before calling imap_acl_cmd_getacl in cmd_getacl the new code checks if the
command should be proxied and if so, does the proxying.
Markus Valentin [Tue, 25 May 2021 14:59:31 +0000 (16:59 +0200)]
imap-acl: Extract imap_acl_cmd_deleteacl from cmd_deletacl
This change makes acl_mailbox_open_allocated_as_admin called later which
is necessary for the following proxying IMAP ACL changes.
Markus Valentin [Tue, 25 May 2021 14:45:13 +0000 (16:45 +0200)]
imap-acl: Extract imap_acl_cmd_setacl from cmd_setacl
This change makes acl_mailbox_open_allocated_as_admin called later which
is necessary for the following proxying IMAP ACL changes.
Markus Valentin [Tue, 25 May 2021 14:29:10 +0000 (16:29 +0200)]
imap-acl: Extract imap_acl_cmd_getacl from cmd_getacl
This change makes acl_mailbox_open_allocated_as_admin called later which
is necessary for the following proxying IMAP ACL changes.
Markus Valentin [Wed, 19 May 2021 12:52:36 +0000 (14:52 +0200)]
imap-acl: Implement proxying commands to an imapc location for MYRIGHTS
Introduce the needed changes to proxy imap-acl commands to a remote
backend using imap-client.
Before calling imap_acl_cmd_myrights in cmd_myrights the new code checks if
the command should be proxied and if so, does the proxying.
Markus Valentin [Tue, 25 May 2021 10:40:55 +0000 (12:40 +0200)]
imap-acl: Add imapc_acl_get_mailbox_error
Allows to retrieve full mailbox error.
Markus Valentin [Tue, 25 May 2021 09:19:47 +0000 (11:19 +0200)]
imap-acl: Split off imap_acl_cmd_myrights from cmd_myrights
Markus Valentin [Thu, 20 May 2021 11:47:55 +0000 (13:47 +0200)]
imap-acl: Split acl_mailbox_open_as_admin
This allows easier implementation of the imap-acl proxying.
Markus Valentin [Thu, 20 May 2021 21:21:10 +0000 (23:21 +0200)]
imap-acl: Add imap_acl_storage with module context
Markus Valentin [Tue, 25 May 2021 10:38:50 +0000 (12:38 +0200)]
imapc: Add imapc_mail_error_to_resp_text_code to access error msg by enum
Markus Valentin [Wed, 26 May 2021 08:31:26 +0000 (10:31 +0200)]
imapc: Change function signature prefix to imapc_resp_text_code_parse
Markus Valentin [Thu, 20 May 2021 21:18:30 +0000 (23:18 +0200)]
imapc: Add imapc_storage_client_unregister_untagged function
Markus Valentin [Tue, 18 May 2021 14:26:46 +0000 (16:26 +0200)]
imapc: Add imapc_features=acl
In order to allow proxying IMAP ACL commands to a remote backend
Timo Sirainen [Fri, 21 May 2021 17:23:57 +0000 (19:23 +0200)]
lib: test-event-filter-*: Hide details of tests unless they fail
This removes ~14k lines of output from test-lib run.
Timo Sirainen [Fri, 21 May 2021 13:11:45 +0000 (16:11 +0300)]
imap: Send tagged login reply before finalizing user initialization
Broken by
5fc66f182ff6941639d30372b414c1b39ae1e67e
Timo Sirainen [Fri, 21 May 2021 13:23:36 +0000 (16:23 +0300)]
m4, dovecot-config: Add LIBDOVECOT_LUA_INCLUDE
This allows building plugins that use lib-lua against uninstalled Dovecot
source code tree.
Josef 'Jeff' Sipek [Thu, 20 May 2021 15:05:37 +0000 (11:05 -0400)]
lib: event filter - Return invalid chars in the lexer
This way, we leave it up to the parser to figure out whether or not they
make sense.
Josef 'Jeff' Sipek [Thu, 20 May 2021 14:24:35 +0000 (10:24 -0400)]
lib: event filter - Allow '?' in filter language tokens
Without this, it is not possible to use '?' wildcards without quoting the
value.
Timo Sirainen [Tue, 18 May 2021 14:44:08 +0000 (17:44 +0300)]
dict-sql: Support SQL_DB_FLAG_ON_CONFLICT_DO
Timo Sirainen [Tue, 18 May 2021 14:40:00 +0000 (17:40 +0300)]
lib-sql: Add SQL_DB_FLAG_ON_CONFICT_DO for new enough sqlite and pgsql
Timo Sirainen [Tue, 18 May 2021 14:21:59 +0000 (17:21 +0300)]
lib-sql: sqlpool: Implement get_flags() as a wrapper to the real db
Timo Sirainen [Tue, 18 May 2021 14:15:02 +0000 (17:15 +0300)]
lib: test-array - Add more unit tests for array_foreach*()
Make sure that the elem value is as expected after the loop completes.
Timo Sirainen [Tue, 18 May 2021 14:08:51 +0000 (17:08 +0300)]
lib-sql: Add sql_db_vfuncs.get_flags()
Timo Sirainen [Tue, 18 May 2021 14:02:30 +0000 (17:02 +0300)]
dict-sql: Use SQL_DB_FLAG_ON_DUPLICATE_KEY
Instead of hardcoding mysql check.
Timo Sirainen [Tue, 18 May 2021 14:00:44 +0000 (17:00 +0300)]
lib-sql: Add SQL_DB_FLAG_ON_DUPLICATE_KEY flag for MySQL
Aki Tuomi [Mon, 24 May 2021 15:55:28 +0000 (18:55 +0300)]
auth: mech-oauth2 - Iterate fields in safer manner
Static analyser wasn't happy about the previous way.