]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
6 weeks agodoveadm: dsync - Fix -e parameter when used with dsync-server
Aki Tuomi [Tue, 11 Nov 2025 07:44:14 +0000 (09:44 +0200)] 
doveadm: dsync - Fix -e parameter when used with dsync-server

It was set to sync_since_timestamp.

Broken in ee8294dbc7bb549557f6ba1264d66b55fbef69b6

6 weeks agodoveadm: dsync - Search exportable mails with timestamps
Aki Tuomi [Tue, 11 Nov 2025 06:38:38 +0000 (08:38 +0200)] 
doveadm: dsync - Search exportable mails with timestamps

This speeds up dsync with -t and -e, especially over network connection.

6 weeks agodoveadm: dsync - Extract dsync_mailbox_import_init() arguments to a structure
Aki Tuomi [Tue, 11 Nov 2025 07:00:07 +0000 (09:00 +0200)] 
doveadm: dsync - Extract dsync_mailbox_import_init() arguments to a structure

It's easier to extend in future

6 weeks agodoveadm: dsync - Extract dsync_mailbox_export_init() parameters to a structure
Aki Tuomi [Tue, 11 Nov 2025 06:47:47 +0000 (08:47 +0200)] 
doveadm: dsync - Extract dsync_mailbox_export_init() parameters to a structure

It's easier to extend in future

6 weeks agofts-flatcurve: Fix mailbox leak if it couldn't be opened
Timo Sirainen [Mon, 10 Nov 2025 12:25:43 +0000 (14:25 +0200)] 
fts-flatcurve: Fix mailbox leak if it couldn't be opened

This could also result in a crash:
Panic: file mail-user.c: line 185 (mail_user_deinit): assertion failed: ((*user)->refcount == 1)

6 weeks agolib-var-expand: var-expand-parser - Add YYFPRINTF() wrapper
Aki Tuomi [Mon, 10 Nov 2025 08:38:00 +0000 (10:38 +0200)] 
lib-var-expand: var-expand-parser - Add YYFPRINTF() wrapper

Useful if one needs to debug parser.

6 weeks agolib-var-expand: test-var-expand - Print more useful error if test->out is empty
Aki Tuomi [Mon, 10 Nov 2025 08:35:00 +0000 (10:35 +0200)] 
lib-var-expand: test-var-expand - Print more useful error if test->out is empty

6 weeks agolib-var-expand: Generate 8-bit flexer
Aki Tuomi [Mon, 10 Nov 2025 08:30:11 +0000 (10:30 +0200)] 
lib-var-expand: Generate 8-bit flexer

This is needed for proper utf-8 support in future.

6 weeks agolib-var-expand: Add fuzzer for var_expand_program_create()
Aki Tuomi [Mon, 10 Nov 2025 07:39:57 +0000 (09:39 +0200)] 
lib-var-expand: Add fuzzer for var_expand_program_create()

6 weeks agolib-var-expand: Fix list manipulation in make_new_program()
Aki Tuomi [Mon, 10 Nov 2025 07:39:04 +0000 (09:39 +0200)] 
lib-var-expand: Fix list manipulation in make_new_program()

Fixes signal 11 crash when handling multiple chained programs like
hello%{}world.

6 weeks agolib-mail: test-istream-qp-decoder - Keep limit constant in get_encoding_size_diff()
Aki Tuomi [Mon, 10 Nov 2025 09:33:21 +0000 (11:33 +0200)] 
lib-mail: test-istream-qp-decoder - Keep limit constant in get_encoding_size_diff()

Broken in e3b45a1e30c98dcf33bc79dc9370f1217eadc36a

6 weeks agolib-mail: Add more fuzzers
Aki Tuomi [Mon, 10 Nov 2025 07:02:24 +0000 (09:02 +0200)] 
lib-mail: Add more fuzzers

6 weeks agolib-mail: message-date - Add missing bounds checking
Aki Tuomi [Sun, 9 Nov 2025 17:32:36 +0000 (19:32 +0200)] 
lib-mail: message-date - Add missing bounds checking

All current callers are guaranteed to pass input that is NUL-terminated.
In case of SEARCH SENT* commands the input comes from buffer_t, which is also
guaranteed to be NUL-terminated (although not necessarily immediately after the
input data).

Found by naoki-wa via yeswehack.

6 weeks agolib: Move cpu-limit test to its own test binary
Timo Sirainen [Fri, 17 Oct 2025 11:27:09 +0000 (14:27 +0300)] 
lib: Move cpu-limit test to its own test binary

This allows running it in parallel with the rest of the tests.

6 weeks agoMakefile.test.include: Use "make check" tests in parallel
Timo Sirainen [Wed, 5 Nov 2025 10:54:33 +0000 (12:54 +0200)] 
Makefile.test.include: Use "make check" tests in parallel

6 weeks agolib-program-client, lib-smtp: Move unit test runs to Makefile.test.include
Timo Sirainen [Sat, 18 Oct 2025 15:33:29 +0000 (18:33 +0300)] 
lib-program-client, lib-smtp: Move unit test runs to Makefile.test.include

These add NOCHILDREN_TESTS for some tests.

6 weeks agoglobal: Move most unit test runs to Makefile.test.include
Timo Sirainen [Wed, 5 Nov 2025 10:50:46 +0000 (12:50 +0200)] 
global: Move most unit test runs to Makefile.test.include

The special cases are changed by the next commit.

6 weeks agolib-sql: Makefile.am - Use test_programs instead of check_PROGRAMS variable
Timo Sirainen [Wed, 5 Nov 2025 10:47:18 +0000 (12:47 +0200)] 
lib-sql: Makefile.am - Use test_programs instead of check_PROGRAMS variable

This makes it consistent with other unit tests.

6 weeks agolib-test: Give a clear panic if test_dir_init() call is missing
Timo Sirainen [Wed, 5 Nov 2025 10:34:11 +0000 (12:34 +0200)] 
lib-test: Give a clear panic if test_dir_init() call is missing

6 weeks agolib-storage, mail-crypt: test-mail* - Use the new test-dir API
Timo Sirainen [Sat, 25 Oct 2025 17:15:05 +0000 (20:15 +0300)] 
lib-storage, mail-crypt: test-mail* - Use the new test-dir API

mail-crypt's test-mail-key also uses test-mail-storage-common API, so it
now needs the test_dir_init() call.

6 weeks agolib-http, lib-smtp: test-*-payload - Skip files created by make check
Timo Sirainen [Sat, 25 Oct 2025 16:38:14 +0000 (19:38 +0300)] 
lib-http, lib-smtp: test-*-payload - Skip files created by make check

These may change during "make check", breaking the test.

6 weeks agoconfig: Fail if trying to give section name for strlist or boollist setting
Timo Sirainen [Mon, 3 Nov 2025 08:22:54 +0000 (10:22 +0200)] 
config: Fail if trying to give section name for strlist or boollist setting

For example this should fail:

mail_plugins foo {
}

6 weeks agoconfig: Fail if trying to use non-strlist and non-boollist setting as a section
Timo Sirainen [Mon, 3 Nov 2025 08:22:19 +0000 (10:22 +0200)] 
config: Fail if trying to use non-strlist and non-boollist setting as a section

For example this was silently ignored:

mail_driver {
}

6 weeks agodoveadm: dsync_remote_cmd setting - Remove obsolete -U parameter
Edmund Lodewijks [Wed, 5 Nov 2025 10:21:41 +0000 (12:21 +0200)] 
doveadm: dsync_remote_cmd setting - Remove obsolete -U parameter

This was forgotten to be removed in 4c04e4c30fd4817a8b0e11d04d9681173f696f41

7 weeks agolazy-expunge: Change lazy_expunge_only_last_instance default to yes
Marco Bettini [Fri, 24 Oct 2025 12:54:13 +0000 (12:54 +0000)] 
lazy-expunge: Change lazy_expunge_only_last_instance default to yes

7 weeks agolib-compression: test-compression - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 17:51:43 +0000 (18:51 +0100)] 
lib-compression: test-compression - Use the new test-dir API

7 weeks agolib-index: test-mail-index-write - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 17:09:00 +0000 (18:09 +0100)] 
lib-index: test-mail-index-write - Use the new test-dir API

7 weeks agolib-http: test-http-payload - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 18:59:41 +0000 (19:59 +0100)] 
lib-http: test-http-payload - Use the new test-dir API

7 weeks agolib-smtp: test-smtp-payload - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 17:56:16 +0000 (18:56 +0100)] 
lib-smtp: test-smtp-payload - Use the new test-dir API

7 weeks agolib-smtp: test-smtp-submit - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 16:42:56 +0000 (17:42 +0100)] 
lib-smtp: test-smtp-submit - Use the new test-dir API

7 weeks agolib-program-client: test-program-client-* - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:00:13 +0000 (22:00 +0100)] 
lib-program-client: test-program-client-* - Use the new test-dir API

7 weeks agolib-index: test-mail-{index,cache} - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 19:52:34 +0000 (20:52 +0100)] 
lib-index: test-mail-{index,cache} - Use the new test-dir API

7 weeks agolib-imap-client: test-imapc-client - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 20:59:07 +0000 (21:59 +0100)] 
lib-imap-client: test-imapc-client - Use the new test-dir API

7 weeks agolib-fs: test-fs-posix - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 20:58:18 +0000 (21:58 +0100)] 
lib-fs: test-fs-posix - Use the new test-dir API

7 weeks agoimap: test-imap-client-hibernate - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 20:57:11 +0000 (21:57 +0100)] 
imap: test-imap-client-hibernate - Use the new test-dir API

7 weeks agoconfig: test-config-parser - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 20:56:33 +0000 (21:56 +0100)] 
config: test-config-parser - Use the new test-dir API

7 weeks agolib-json: test-json-istream - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 19:07:28 +0000 (20:07 +0100)] 
lib-json: test-json-istream - Use the new test-dir API

7 weeks agolib: test-ostream-file - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 23:19:26 +0000 (00:19 +0100)] 
lib: test-ostream-file - Use the new test-dir API

7 weeks agolib: test-iostream-temp - Use the new test-dir API
Stephan Bosch [Sat, 1 Nov 2025 19:37:27 +0000 (20:37 +0100)] 
lib: test-iostream-temp - Use the new test-dir API

7 weeks agolib: test-istream-seekable - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 23:19:13 +0000 (00:19 +0100)] 
lib: test-istream-seekable - Use the new test-dir API

7 weeks agolib: test-event-log - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 22:58:34 +0000 (23:58 +0100)] 
lib: test-event-log - Use the new test-dir API

7 weeks agolib: test-path-util - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:05:52 +0000 (22:05 +0100)] 
lib: test-path-util -  Use the new test-dir API

7 weeks agolib: test-file-create-locked - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:36:10 +0000 (22:36 +0100)] 
lib: test-file-create-locked - Use the new test-dir API

7 weeks agolib: test-file-create-locked - Use the new test-subprocess API
Stephan Bosch [Mon, 27 Oct 2025 21:04:45 +0000 (22:04 +0100)] 
lib: test-file-create-locked - Use the new test-subprocess API

7 weeks agolib: test-file-cache - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:04:16 +0000 (22:04 +0100)] 
lib: test-file-cache - Use the new test-dir API

7 weeks agolib: test-cpu-limit - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:03:18 +0000 (22:03 +0100)] 
lib: test-cpu-limit - Use the new test-dir API

7 weeks agolib: test-buffer-istream - Use the new test-dir API
Stephan Bosch [Mon, 27 Oct 2025 21:02:55 +0000 (22:02 +0100)] 
lib: test-buffer-istream - Use the new test-dir API

7 weeks agolib-test: Add support for temporary test directories
Stephan Bosch [Sun, 26 Oct 2025 04:42:06 +0000 (05:42 +0100)] 
lib-test: Add support for temporary test directories

7 weeks agolib-test: test-common - Add test generic event
Stephan Bosch [Mon, 27 Oct 2025 20:30:51 +0000 (21:30 +0100)] 
lib-test: test-common - Add test generic event

Use it to replace events created for some individual tests. Also replace the
event created by test-submission.

7 weeks agolib-test: test-subprocess - Move most signal and cleanup code to test-common for...
Stephan Bosch [Mon, 27 Oct 2025 20:48:35 +0000 (21:48 +0100)] 
lib-test: test-subprocess - Move most signal and cleanup code to test-common for re-use

7 weeks agolib: safe-mkstemp - Add safe_mkstemp_dir*()
Stephan Bosch [Fri, 31 Oct 2025 13:44:10 +0000 (14:44 +0100)] 
lib: safe-mkstemp - Add safe_mkstemp_dir*()

7 weeks agolib: safe-mkstemp - Split off safe_mkstemp_create()
Stephan Bosch [Fri, 31 Oct 2025 13:30:46 +0000 (14:30 +0100)] 
lib: safe-mkstemp - Split off safe_mkstemp_create()

7 weeks agoimap: test-imap-client-hibernate - Rename test_init() to test_tmp_dir_init()
Stephan Bosch [Sun, 26 Oct 2025 04:56:43 +0000 (05:56 +0100)] 
imap: test-imap-client-hibernate - Rename test_init() to test_tmp_dir_init()

7 weeks agolib: test-path-util - Rename test_init() to test_path_util_init()
Stephan Bosch [Sun, 26 Oct 2025 04:55:28 +0000 (05:55 +0100)] 
lib: test-path-util - Rename test_init() to test_path_util_init()

7 weeks agostats: test-stats-common - Rename test_init() to test_stats_init()
Stephan Bosch [Sun, 26 Oct 2025 04:48:11 +0000 (05:48 +0100)] 
stats: test-stats-common - Rename test_init() to test_stats_init()

7 weeks agolib-test: Fix whitespace issues in test-subprocess.c
Stephan Bosch [Mon, 27 Oct 2025 20:44:40 +0000 (21:44 +0100)] 
lib-test: Fix whitespace issues in test-subprocess.c

7 weeks agolib-sasl: fuzz-sasl-authentication - Limit the length of the passwords
Stephan Bosch [Mon, 3 Nov 2025 17:12:17 +0000 (18:12 +0100)] 
lib-sasl: fuzz-sasl-authentication - Limit the length of the passwords

For hashed algorithms, the password length could rise limitless, causing
fuzzer timeouts.

OSS-Fuzz report: 457240545

7 weeks agoutil: health-check.sh - Use a cleaner way to kill sleep
Timo Sirainen [Fri, 31 Oct 2025 12:44:18 +0000 (14:44 +0200)] 
util: health-check.sh - Use a cleaner way to kill sleep

With the 6ee85b80857d241622a349aac47d51b70b27cc46 approach it introduced
errors like:

Error: ... Terminated { sleep $timeout; kill -3 $$ 2> /dev/null; }

7 weeks agoconfig: Support config version 2.4.2
Timo Sirainen [Fri, 31 Oct 2025 10:42:05 +0000 (12:42 +0200)] 
config: Support config version 2.4.2

7 weeks agolib-sasl: sasl-server-mech-otp - Fix parsing of authid from initial client response
Stephan Bosch [Thu, 30 Oct 2025 23:19:45 +0000 (00:19 +0100)] 
lib-sasl: sasl-server-mech-otp - Fix parsing of authid from initial client response

Before, it assumed this part to be nul-terminated, while it is not. Therefore,
it could read out-of-bounds memory, possibly crashing, which is wat became
apparent in the fuzzer.

The actual auth service code implicitly always provides a NUL termination
though, because the client response data comes via t_buffer_create() content
which always reserves +1 byte for NUL. Therefore, the auth service would not
have encountered this issue.

OSS-Fuzz report: 456423266

7 weeks agolib-sasl: server - Enforce absolute limit on the length of authid/authzid
Stephan Bosch [Tue, 28 Oct 2025 13:47:05 +0000 (14:47 +0100)] 
lib-sasl: server - Enforce absolute limit on the length of authid/authzid

OSS-Fuzz report: 455796070

7 weeks agolib-sasl: Enforce absolute limit on SASL message size for both client and server
Stephan Bosch [Tue, 28 Oct 2025 13:35:06 +0000 (14:35 +0100)] 
lib-sasl: Enforce absolute limit on SASL message size for both client and server

This is a second layer of defence against abuse. The real limit enforced by the
auth service can be (is) smaller. Additionally, these limits will make sure the
fuzzer does not time out.

OSS-Fuzz report: 455796070

7 weeks agolib-regex: Remove LIBPCRE_LIBS from test dependencies
Aki Tuomi [Fri, 31 Oct 2025 10:53:33 +0000 (12:53 +0200)] 
lib-regex: Remove LIBPCRE_LIBS from test dependencies

Was accidentically added in 49ae6e798310e5c4b96709db435a3714ea6468a8

7 weeks agolib: crc32 - Use zlib's built-in CRC32 function
Michael M Slusarz [Sat, 4 Oct 2025 20:24:54 +0000 (14:24 -0600)] 
lib: crc32 - Use zlib's built-in CRC32 function

Performance-wise, according to fastmail's crc32 test suite, this is 10x
faster than the previous code.

7 weeks agodovecot-sysreport: Add -D|--destdir support
Aki Tuomi [Mon, 27 Oct 2025 10:33:27 +0000 (12:33 +0200)] 
dovecot-sysreport: Add -D|--destdir support

This allows pointing a directory where to write files

7 weeks agolib-master: Split off master_service_can_idle_die()
Timo Sirainen [Wed, 29 Oct 2025 21:14:08 +0000 (23:14 +0200)] 
lib-master: Split off master_service_can_idle_die()

7 weeks agolib-master: If SIGINT idle-kill is ignored due to handling a new client, make sure...
Timo Sirainen [Wed, 29 Oct 2025 17:44:15 +0000 (19:44 +0200)] 
lib-master: If SIGINT idle-kill is ignored due to handling a new client, make sure master status is notified

Master should have been notified usually, but it could have been an
unimportant notification that was ignored due to write() returning EAGAIN.

7 weeks agolib-master: If SIGINT idle-kill is ignored, make sure master sees the status update
Timo Sirainen [Wed, 29 Oct 2025 17:42:50 +0000 (19:42 +0200)] 
lib-master: If SIGINT idle-kill is ignored, make sure master sees the status update

If initial write() to master status pipe fails with EAGAIN, try to send it
when possible.

7 weeks agolib: Clarify io_loop_stop_delayed() comment
Timo Sirainen [Thu, 30 Oct 2025 11:29:51 +0000 (13:29 +0200)] 
lib: Clarify io_loop_stop_delayed() comment

7 weeks agoglobal: Remove default service/*/service_extra_groups=$SET:default_internal_group
Timo Sirainen [Fri, 24 Oct 2025 12:46:35 +0000 (15:46 +0300)] 
global: Remove default service/*/service_extra_groups=$SET:default_internal_group

This is no longer necessary now that mail_access_groups sets it.

7 weeks agoconfig: Support versioned defaults for service settings
Timo Sirainen [Fri, 24 Oct 2025 12:45:36 +0000 (15:45 +0300)] 
config: Support versioned defaults for service settings

7 weeks agolib-storage: Change mail_access_groups default to $SET:default_internal_group
Timo Sirainen [Fri, 24 Oct 2025 12:19:12 +0000 (15:19 +0300)] 
lib-storage: Change mail_access_groups default to $SET:default_internal_group

7 weeks agoacl: vfile_object_modify_right() - Remove the whole identifier if it has no rights...
Marco Bettini [Wed, 22 Oct 2025 15:25:17 +0000 (15:25 +0000)] 
acl: vfile_object_modify_right() - Remove the whole identifier if it has no rights left

8 weeks agoNEWS: Add news for 2.4.2
Aki Tuomi [Tue, 7 Oct 2025 10:57:26 +0000 (13:57 +0300)] 
NEWS: Add news for 2.4.2

8 weeks agolib: Fix signedness in assert in time_to_uint32()
Aki Tuomi [Wed, 29 Oct 2025 11:00:24 +0000 (13:00 +0200)] 
lib: Fix signedness in assert in time_to_uint32()

If time_t is signed and 32-bit, this can cause warnings.

8 weeks agolib-master: Fix pre-accept() handling for services with restart_request_count=1
Timo Sirainen [Mon, 27 Oct 2025 11:12:07 +0000 (13:12 +0200)] 
lib-master: Fix pre-accept() handling for services with restart_request_count=1

Broken by 06045a9b2160229dcf78619f6208094843dfacd1

8 weeks agoauth: test-mech - No mechanism is expected to log errors anymore in this test
Stephan Bosch [Sun, 26 Oct 2025 02:34:24 +0000 (03:34 +0100)] 
auth: test-mech - No mechanism is expected to log errors anymore in this test

8 weeks agoauth: test-mech - The OTP mechanism no longer logs errors for client protocol violations
Stephan Bosch [Sun, 26 Oct 2025 02:15:35 +0000 (03:15 +0100)] 
auth: test-mech - The OTP mechanism no longer logs errors for client protocol violations

Yet, we forgot to amend this test. It only failed in Valgrind.

8 weeks agolib-storage: Don't try to mkdir root directory for unusable namespaces
Timo Sirainen [Fri, 24 Oct 2025 17:18:14 +0000 (20:18 +0300)] 
lib-storage: Don't try to mkdir root directory for unusable namespaces

The unusable namespaces are for nonexistent user shared namespaces.

2 months agodoveadm: Add deleted to mailbox status
Marco Bettini [Fri, 26 Sep 2025 13:02:09 +0000 (13:02 +0000)] 
doveadm: Add deleted to mailbox status

It is also added to the 'all' field

2 months agolib-storage: Add deleted mail count to dovecot.list.index
Marco Bettini [Thu, 9 Oct 2025 07:53:11 +0000 (07:53 +0000)] 
lib-storage: Add deleted mail count to dovecot.list.index

2 months agolib-storage: Add support for struct mailbox_status.deleted
Marco Bettini [Fri, 26 Sep 2025 13:01:05 +0000 (13:01 +0000)] 
lib-storage: Add support for struct mailbox_status.deleted

2 months agolib-sasl: fuzz-sasl-authentication - Forgot to ignore token-based mechanisms for...
Stephan Bosch [Thu, 23 Oct 2025 23:19:57 +0000 (01:19 +0200)] 
lib-sasl: fuzz-sasl-authentication - Forgot to ignore token-based mechanisms for password validity check

OSS-Fuzz report: 454518406

2 months agolib-sasl: fuzz-sasl-authentication - Check validity of authentication success in...
Stephan Bosch [Thu, 23 Oct 2025 23:13:47 +0000 (01:13 +0200)] 
lib-sasl: fuzz-sasl-authentication - Check validity of authentication success in separate function

2 months agolib-auth: auth-scram-client - Reduce maximum hash iterations in fuzzer to prevent...
Stephan Bosch [Thu, 23 Oct 2025 17:50:43 +0000 (19:50 +0200)] 
lib-auth: auth-scram-client - Reduce maximum hash iterations in fuzzer to prevent timeout

OSS-Fuzz report: 454444201

2 months agodoveadm: cmd_copy_alloc_source_user() - Fix crash on source user not existing
Marco Bettini [Fri, 24 Oct 2025 10:19:08 +0000 (10:19 +0000)] 
doveadm: cmd_copy_alloc_source_user() - Fix crash on source user not existing

2 months agolib-ssl-iostream: Handle delayed handshake failure explicitly
Timo Sirainen [Fri, 24 Oct 2025 09:35:35 +0000 (12:35 +0300)] 
lib-ssl-iostream: Handle delayed handshake failure explicitly

The previous commit already fixed the busy loop bug, but errno=EINVAL is
better for the handshake failure than EPIPE.

2 months agolib-ssl-iostream: Fix potential busy loop when handshake has failed
Timo Sirainen [Fri, 24 Oct 2025 09:32:41 +0000 (12:32 +0300)] 
lib-ssl-iostream: Fix potential busy loop when handshake has failed

If the stream is already destroyed, handshaking should return -1 as error
instead of "more data needed".

This fixes at least a potential busy loop when login-proxy tries to connect
to a remote server with mismatching SSL certificate name. It was timing
sensitive though, only seeming to happen when running with valgrind.

This code has been there since 9d0640616c30701bed286034840facfb386db90e

2 months agoanvil: Fix memory leak when kicking clients
Timo Sirainen [Wed, 22 Oct 2025 18:19:29 +0000 (21:19 +0300)] 
anvil: Fix memory leak when kicking clients

2 months agolib-storage: Sync "Time moved forward by" warning message with master process
Timo Sirainen [Thu, 23 Oct 2025 20:40:12 +0000 (23:40 +0300)] 
lib-storage: Sync "Time moved forward by" warning message with master process

master had "by", while lib-storage didn't.

2 months agoimap: Fix memory leak when using STORE with keywords on an EXAMINEd mailbox
Timo Sirainen [Thu, 23 Oct 2025 20:18:17 +0000 (23:18 +0300)] 
imap: Fix memory leak when using STORE with keywords on an EXAMINEd mailbox

2 months agostats: Fix memory leak when deinitializing file transport
Timo Sirainen [Thu, 23 Oct 2025 14:51:21 +0000 (17:51 +0300)] 
stats: Fix memory leak when deinitializing file transport

2 months agolib-ldap: Fix memory leak at connection deinit
Timo Sirainen [Thu, 23 Oct 2025 12:46:52 +0000 (15:46 +0300)] 
lib-ldap: Fix memory leak at connection deinit

2 months agoauth: ldap - Make sure ldap log prefix doesn't contain (null)
Timo Sirainen [Wed, 22 Oct 2025 12:33:59 +0000 (15:33 +0300)] 
auth: ldap - Make sure ldap log prefix doesn't contain (null)

This could have happened with invalid ldap_uris.

2 months agolib: str_to_*() - Fix compiler warnings
Timo Sirainen [Wed, 22 Oct 2025 11:27:51 +0000 (14:27 +0300)] 
lib: str_to_*() - Fix compiler warnings

Some gcc versions think endp may be uninitialized.

2 months agolib-storage: Use case-insensitive ns_prefix/INBOX only for shared namespace
Timo Sirainen [Wed, 22 Oct 2025 11:38:28 +0000 (14:38 +0300)] 
lib-storage: Use case-insensitive ns_prefix/INBOX only for shared namespace

For example OtherNamespace/Inbox shouldn't be converted to INBOX.

Broken by 776d3e6f408ae5c4f903c4ed9e906d84e3e741a1

2 months agolib-storage: Make sure shared INBOX mailbox is always uppercased
Timo Sirainen [Wed, 22 Oct 2025 09:09:46 +0000 (12:09 +0300)] 
lib-storage: Make sure shared INBOX mailbox is always uppercased

This fixes issues where if shared/user/INBOX was accessed without
uppercasing the INBOX, it wasn't handled consistently.

2 months agoauth: Add assert to make sure NULL cache key isn't tried to be expanded
Timo Sirainen [Wed, 22 Oct 2025 08:01:48 +0000 (11:01 +0300)] 
auth: Add assert to make sure NULL cache key isn't tried to be expanded

2 months agoauth: Don't do cache lookup on internal passdb failure when passdb_use_cache=no
Timo Sirainen [Wed, 22 Oct 2025 08:00:56 +0000 (11:00 +0300)] 
auth: Don't do cache lookup on internal passdb failure when passdb_use_cache=no

This was the only place where passdb_cache_lookup_credentials() caller didn't
already check for key=NULL.

2 months agolib: iostream-temp - Optimize writing many small writes
Timo Sirainen [Tue, 21 Oct 2025 10:33:56 +0000 (13:33 +0300)] 
lib: iostream-temp - Optimize writing many small writes

There was no buffering for o_stream_send*() calls after the initial
in-memory buffer size was exceeded. Each one was immediately written to
disk.

This fixes inefficiencies at least with doveadm-server HTTP responses.