]> git.ipfire.org Git - thirdparty/dovecot/core.git/log
thirdparty/dovecot/core.git
2 months agolib-fs: Add fs_file_equals()
Timo Sirainen [Wed, 11 Mar 2026 17:11:13 +0000 (19:11 +0200)] 
lib-fs: Add fs_file_equals()

2 months agolib-json: remove misleading >0x80 check from generator
Josef 'Jeff' Sipek [Fri, 13 Mar 2026 11:39:13 +0000 (07:39 -0400)] 
lib-json: remove misleading >0x80 check from generator

json_append_escaped_char() is called only by json_append_escaped_ucs4()
and only when the unicode character is <0x80, therefore this check is
useless at best and misleading at worst.

2 months agoconfigure: Report all CFLAGS and LDFLAGS
Aki Tuomi [Wed, 11 Mar 2026 11:32:43 +0000 (13:32 +0200)] 
configure: Report all CFLAGS and LDFLAGS

2 months agom4: dovecot - Bump serial
Aki Tuomi [Tue, 10 Mar 2026 14:00:16 +0000 (16:00 +0200)] 
m4: dovecot - Bump serial

2 months agom4: dovecot - Fix AM_LDFLAGS usage
Aki Tuomi [Tue, 10 Mar 2026 18:07:55 +0000 (20:07 +0200)] 
m4: dovecot - Fix AM_LDFLAGS usage

2 months agom4: dovecot - Add address & memory sanitizers to linker flags too
Aki Tuomi [Tue, 10 Mar 2026 13:48:34 +0000 (15:48 +0200)] 
m4: dovecot - Add address & memory sanitizers to linker flags too

2 months agolib: ostream-file - Shrink buffer to optimal size after it is flushed
Timo Sirainen [Fri, 13 Mar 2026 11:36:47 +0000 (13:36 +0200)] 
lib: ostream-file - Shrink buffer to optimal size after it is flushed

If the ostream buffer was temporarily grown large, it was never shrunk back
to a small value, causing memory to be wasted for long-lived streams.

2 months agolib-index: Fix potential crash when handling corrupted cache file header
Timo Sirainen [Thu, 12 Mar 2026 13:43:26 +0000 (15:43 +0200)] 
lib-index: Fix potential crash when handling corrupted cache file header

Corrupted deleted_record_count could have caused "division by zero" crash.
Fix both calculations to avoid integer overflows.

2 months agoimap: Make sure proctitle is refreshed after failed unhibernation
Timo Sirainen [Tue, 10 Mar 2026 18:30:35 +0000 (20:30 +0200)] 
imap: Make sure proctitle is refreshed after failed unhibernation

This should avoid hanging [waiting on unhibernate client] proctitles.

2 months agoimap: Change imap-master socket to be owned by default_internal_user
Timo Sirainen [Mon, 9 Mar 2026 22:47:43 +0000 (00:47 +0200)] 
imap: Change imap-master socket to be owned by default_internal_user

This allows imap-hibernation to work with default settings. The previous
change of requiring DOVECOT-TOKEN authentication for imap-master makes
this change safe.

2 months agoimap, imap-hibernate: Use DOVECOT-TOKEN authentication for unhibernation
Timo Sirainen [Mon, 9 Mar 2026 22:44:46 +0000 (00:44 +0200)] 
imap, imap-hibernate: Use DOVECOT-TOKEN authentication for unhibernation

The hibernated sessions provide an authentication token to imap-hibernate
process, which sends the token to imap-master socket when unhibernating.
If the token doesn't match, the unhibernation will fail. This allows
giving imap-master socket wider permissions, since it can no longer be
used to log in as any user.

2 months agologin-common: Improve logging internal failure errors for proxy reauth
Timo Sirainen [Tue, 10 Mar 2026 19:05:48 +0000 (21:05 +0200)] 
login-common: Improve logging internal failure errors for proxy reauth

2 months agodoveadm auth test/login: Log the reason for auth failure
Timo Sirainen [Tue, 10 Mar 2026 19:05:25 +0000 (21:05 +0200)] 
doveadm auth test/login: Log the reason for auth failure

2 months agolib-auth-client: Fill a more exact log_error for auth_request_callback_t
Timo Sirainen [Tue, 10 Mar 2026 18:59:16 +0000 (20:59 +0200)] 
lib-auth-client: Fill a more exact log_error for auth_request_callback_t

2 months agolib-auth-client: Add log_error parameter to auth_request_callback_t
Timo Sirainen [Mon, 9 Mar 2026 22:42:05 +0000 (00:42 +0200)] 
lib-auth-client: Add log_error parameter to auth_request_callback_t

2 months agolib-auth-client: Add comments to auth-client.h
Timo Sirainen [Mon, 9 Mar 2026 22:30:28 +0000 (00:30 +0200)] 
lib-auth-client: Add comments to auth-client.h

2 months agolib-auth-client: Add code=temp_fail to all internal failures
Timo Sirainen [Mon, 9 Mar 2026 22:29:08 +0000 (00:29 +0200)] 
lib-auth-client: Add code=temp_fail to all internal failures

This makes sure the caller handles the internal failure as a temporary
failure.

2 months agolib-auth-client: Fix error message if channel binding not supported by caller
Timo Sirainen [Mon, 9 Mar 2026 22:15:29 +0000 (00:15 +0200)] 
lib-auth-client: Fix error message if channel binding not supported by caller

2 months agolib-auth-client, global: auth_client_set_connect_notify() - Change callback to have...
Timo Sirainen [Mon, 9 Mar 2026 15:58:34 +0000 (17:58 +0200)] 
lib-auth-client, global: auth_client_set_connect_notify() - Change callback to have error string

2 months agoauth: Add a default auth-token UNIX socket
Timo Sirainen [Mon, 9 Mar 2026 14:09:42 +0000 (16:09 +0200)] 
auth: Add a default auth-token UNIX socket

The permissions are 0666, so everyone can connect to it. This should be
safe enough, because only token authentication is allowed and failures are
delayed. Someone might flood the socket with connections, but auth-userdb
socket already has the same potential issue.

2 months agoauth: Fix request leak when client tries to authenticate with unsupported mechanism
Timo Sirainen [Mon, 9 Mar 2026 14:01:04 +0000 (16:01 +0200)] 
auth: Fix request leak when client tries to authenticate with unsupported mechanism

2 months agolib-mail: mbox_from_parse() - Fix bounds check in time parsing
Mark Esler [Sat, 7 Mar 2026 03:09:24 +0000 (19:09 -0800)] 
lib-mail: mbox_from_parse() - Fix bounds check in time parsing

Add bounds checks before hour/minute parsing (msg + 5 > msg_end)
and before optional seconds parsing (msg + 3 > msg_end). The
alt_stamp path consumes a variable number of bytes for the day
field, which can exhaust the initial budget before reaching the
time section.

Also guard the optional seconds entry with msg >= msg_end to
handle truncated inputs that end after minutes.

Found by fuzzing with libFuzzer and AddressSanitizer.

Signed-off-by: Mark Esler <mark@hexproof.dev>
2 months agolib-mail: mbox_from_parse() - Fix bounds check in named timezone
Timo Sirainen [Thu, 12 Mar 2026 09:13:20 +0000 (11:13 +0200)] 
lib-mail: mbox_from_parse() - Fix bounds check in named timezone

The named timezone check reads msg[0] through msg[3] without
verifying 4 bytes remain. The else-if branch below reads msg[0]
through msg[5]. When optional seconds consume the initial budget,
this reads past the buffer.

Based on code by Mark Esler <mark@hexproof.dev>

2 months agolib-mail: mbox_from_parse() - Fix bounds check in trailing timezone
Mark Esler [Fri, 6 Mar 2026 07:03:40 +0000 (23:03 -0800)] 
lib-mail: mbox_from_parse() - Fix bounds check in trailing timezone

The trailing timezone check used msg != msg_end before reading
msg[0] through msg[5]. When fewer than 6 bytes remain, this
reads past the buffer. Replace with msg + 6 <= msg_end.

Found by fuzzing with libFuzzer and AddressSanitizer.

Signed-off-by: Mark Esler <mark@hexproof.dev>
2 months agolib-http: http-message-parser - Fail parsing messages containing both a Content-Lengt...
Stephan Bosch [Mon, 9 Mar 2026 06:09:19 +0000 (07:09 +0100)] 
lib-http: http-message-parser - Fail parsing messages containing both a Content-Length and a Transfer-Encoding header

2 months agolib-http: http-server - Add global request_finished() callback
Stephan Bosch [Mon, 9 Mar 2026 06:51:19 +0000 (07:51 +0100)] 
lib-http: http-server - Add global request_finished() callback

2 months agolib-http: http-server - Properly traverse through HTTP_SERVER_REQUEST_STATE_SENT_RESP...
Stephan Bosch [Mon, 9 Mar 2026 06:50:01 +0000 (07:50 +0100)] 
lib-http: http-server - Properly traverse through HTTP_SERVER_REQUEST_STATE_SENT_RESPONSE state

2 months agolib-http: test-http-server-errors - Properly clear client/server callback pointers
Stephan Bosch [Mon, 9 Mar 2026 06:02:01 +0000 (07:02 +0100)] 
lib-http: test-http-server-errors - Properly clear client/server callback pointers

2 months agom4/ssl.m4: Fix openssl checks not picking up CFLAGS being provided by pkg-config
mauritium [Tue, 13 Jan 2026 23:21:01 +0000 (00:21 +0100)] 
m4/ssl.m4: Fix openssl checks not picking up CFLAGS being provided by pkg-config

2 months agolib: punycode_decode() - Fix reading out of input bounds on invalid input
Timo Sirainen [Tue, 10 Mar 2026 20:17:27 +0000 (22:17 +0200)] 
lib: punycode_decode() - Fix reading out of input bounds on invalid input

Based on code by rootvector2 (Dexter.k)

2 months agolib: punycode_decode() - Minor code refactoring
Timo Sirainen [Tue, 10 Mar 2026 20:16:14 +0000 (22:16 +0200)] 
lib: punycode_decode() - Minor code refactoring

Helps also the next commit.

2 months agolib: punycode_decode() - Fix parsing empty string [after delimiter]
Timo Sirainen [Tue, 10 Mar 2026 20:09:42 +0000 (22:09 +0200)] 
lib: punycode_decode() - Fix parsing empty string [after delimiter]

This caused an assert crash when --enable-experimental-mail-utf8 was
used and invalid punycode domain was being parsed.

Based on code by rootvector2 (Dexter.k)

2 months agofs-metawrap: Set FS_METADATA_OBJECTID on fs_get_nlinks()
Timo Sirainen [Mon, 9 Mar 2026 21:47:33 +0000 (23:47 +0200)] 
fs-metawrap: Set FS_METADATA_OBJECTID on fs_get_nlinks()

This fixes obox + fs-posix to work with lazy_expunge_only_last_instance=yes

2 months agofs-posix: Set FS_METADATA_OBJECTID on fs_stat()
Timo Sirainen [Mon, 9 Mar 2026 21:45:48 +0000 (23:45 +0200)] 
fs-posix: Set FS_METADATA_OBJECTID on fs_stat()

This fixes obox + fs-posix to work with lazy_expunge_only_last_instance=yes

2 months agosdbox: Update MAIL_FETCH_REFCOUNT_ID to include device numbers
Timo Sirainen [Mon, 9 Mar 2026 21:44:00 +0000 (23:44 +0200)] 
sdbox: Update MAIL_FETCH_REFCOUNT_ID to include device numbers

This makes it more reliable when using multiple filesystems.

2 months agomaildir: Update MAIL_FETCH_REFCOUNT_ID to include device numbers
Timo Sirainen [Mon, 9 Mar 2026 21:43:32 +0000 (23:43 +0200)] 
maildir: Update MAIL_FETCH_REFCOUNT_ID to include device numbers

This makes it more reliable when using multiple filesystems.

2 months agovirtual: virtual_search_next_update_seq() - Do not crash if next_update_seq is no...
Marco Bettini [Thu, 5 Mar 2026 11:28:34 +0000 (11:28 +0000)] 
virtual: virtual_search_next_update_seq() - Do not crash if next_update_seq is no longer there

2 months agolib: unicode-transform: Fix assert crash in NFx normalizer occurring at very long...
Stephan Bosch [Fri, 6 Mar 2026 18:58:25 +0000 (19:58 +0100)] 
lib: unicode-transform: Fix assert crash in NFx normalizer occurring at very long non-starter sequences

2 months agodoc: Fix installed dovecot.conf permissions
Xiao Pan [Wed, 19 Nov 2025 23:19:39 +0000 (07:19 +0800)] 
doc: Fix installed dovecot.conf permissions

Use INSTALL_DATA instead of INSTALL to install dovecot.conf with 644 instead
of 755 file permission.

Signed-off-by: Xiao Pan <xyz@flylightning.xyz>
2 months agolib-compression: test_lz4_chunk_size() - Check return values of ()
Marco Bettini [Mon, 9 Mar 2026 10:09:29 +0000 (10:09 +0000)] 
lib-compression: test_lz4_chunk_size() - Check return values of ()

Found by coverity, id 42237, Error handling issues

2 months agoconfig: Fix delaying errors for SET_FILE type
Timo Sirainen [Thu, 5 Mar 2026 10:17:19 +0000 (12:17 +0200)] 
config: Fix delaying errors for SET_FILE type

The error delaying requires access to the full setting name, but the
previous code might have used autoprefixed short setting name.

3 months agolib-http: http-server-connection - Add debug log line for triggering of expected...
Stephan Bosch [Wed, 4 Mar 2026 22:55:18 +0000 (23:55 +0100)] 
lib-http: http-server-connection - Add debug log line for triggering of expected 100 Continue response

3 months agolib-http: http-server-connection - Fix sending of expected 100 Continue response
Stephan Bosch [Wed, 4 Mar 2026 22:53:15 +0000 (23:53 +0100)] 
lib-http: http-server-connection - Fix sending of expected 100 Continue response

It was never sent when a response was preemptively created but not yet submitted.

3 months agolib-http: http-server-response - Add debug log line for creation of response
Stephan Bosch [Wed, 4 Mar 2026 22:52:09 +0000 (23:52 +0100)] 
lib-http: http-server-response - Add debug log line for creation of response

3 months agoglobal: Replace open-coded allocation size arithmetic with overflow-safe helpers
Dexter.k [Fri, 20 Feb 2026 09:34:13 +0000 (09:34 +0000)] 
global: Replace open-coded allocation size arithmetic with overflow-safe helpers

Replace several instances of multi-term allocation size arithmetic
(e.g. a + b + c) with small helper MALLOC_ADD3() macro built on
existing MALLOC_ADD().

This keeps overflow handling centralized, improves consistency across
the codebase, and makes size computations easier to audit.

No behavioral changes intended.

3 months agodoveconf: Remove -H argument
Michael M Slusarz [Fri, 26 Dec 2025 17:22:35 +0000 (10:22 -0700)] 
doveconf: Remove -H argument

This is a relic of (removed) replicator.

3 months agoglobal: Create most files with O_NOFOLLOW flag for extra safety
Timo Sirainen [Mon, 2 Mar 2026 08:21:24 +0000 (10:21 +0200)] 
global: Create most files with O_NOFOLLOW flag for extra safety

3 months agolib-smtp: BDAT - Avoid ubsan warning about integer wrapping with large sizes
Timo Sirainen [Thu, 5 Mar 2026 08:43:51 +0000 (10:43 +0200)] 
lib-smtp: BDAT - Avoid ubsan warning about integer wrapping with large sizes

3 months agolib-smtp: Reject overly large MAIL FROM and BDAT SIZE parameters
Timo Sirainen [Thu, 5 Mar 2026 08:41:45 +0000 (10:41 +0200)] 
lib-smtp: Reject overly large MAIL FROM and BDAT SIZE parameters

At least events use signed intmax_t for storing the mail size, which
can cause such large numbers to wrap to negative numbers.

3 months agom4: dovecot - Bump serial
Aki Tuomi [Thu, 5 Mar 2026 08:33:40 +0000 (10:33 +0200)] 
m4: dovecot - Bump serial

3 months agom4: dovecot - Disable valgrind when running with asan or msan
Aki Tuomi [Thu, 5 Mar 2026 08:53:35 +0000 (10:53 +0200)] 
m4: dovecot - Disable valgrind when running with asan or msan

These conflict with each other

3 months agom4: dovecot - Add --enable-msan
Aki Tuomi [Thu, 5 Mar 2026 08:27:40 +0000 (10:27 +0200)] 
m4: dovecot - Add --enable-msan

3 months agom4: dovecot - Move fsanitize=address to --enable-asan
Aki Tuomi [Thu, 5 Mar 2026 08:25:39 +0000 (10:25 +0200)] 
m4: dovecot - Move fsanitize=address to --enable-asan

Otherwise we will not be able to use google oss-fuzz properly

3 months agom4: dovecot - Remove extra cflags in DOVECOT_WANT_UBSAN
Aki Tuomi [Thu, 5 Mar 2026 08:55:24 +0000 (10:55 +0200)] 
m4: dovecot - Remove extra cflags in DOVECOT_WANT_UBSAN

3 months agom4: dovecot - Fix typo sanitizes -> sanitizers
Aki Tuomi [Thu, 5 Mar 2026 08:28:33 +0000 (10:28 +0200)] 
m4: dovecot - Fix typo sanitizes -> sanitizers

3 months agodoveadm: mail dict - Use user event for dict settings
Aki Tuomi [Wed, 4 Mar 2026 16:41:22 +0000 (18:41 +0200)] 
doveadm: mail dict - Use user event for dict settings

Fixes mail user variables to work with config.

3 months agodoveadm: dict - Use cctx->set_event to initialize dict
Aki Tuomi [Wed, 4 Mar 2026 16:40:50 +0000 (18:40 +0200)] 
doveadm: dict - Use cctx->set_event to initialize dict

This allows using different event for looking up settings.

3 months agoutil: script - Fix handling environment variables if they contain \001 characters
Timo Sirainen [Mon, 2 Mar 2026 12:07:59 +0000 (14:07 +0200)] 
util: script - Fix handling environment variables if they contain \001 characters

This could have resulted in a crash or at least wrong behavior.

Broken since the environment code was added in
7e993ece468916599df2feb3d4c64a91c69cedf8

3 months agolib: Reformat unlink-directory.c
Aki Tuomi [Tue, 3 Mar 2026 07:52:13 +0000 (09:52 +0200)] 
lib: Reformat unlink-directory.c

3 months agolib: unlink-directory - Rename error to first_error
Aki Tuomi [Tue, 3 Mar 2026 07:48:43 +0000 (09:48 +0200)] 
lib: unlink-directory - Rename error to first_error

It describes better what it does

3 months agolib: Assume O_NOFOLLOW exists in unlink_directory_r()
Aki Tuomi [Thu, 26 Feb 2026 16:53:46 +0000 (18:53 +0200)] 
lib: Assume O_NOFOLLOW exists in unlink_directory_r()

This flag is a FreeBSD extension, which was added in Linux
2.1.126, and has subsequently been standardized in
POSIX.1-2008.

3 months agolib-charset: Increase CHARSET_MAX_PENDING_BUF_SIZE to 16 bytes
Timo Sirainen [Sat, 28 Feb 2026 08:32:15 +0000 (10:32 +0200)] 
lib-charset: Increase CHARSET_MAX_PENDING_BUF_SIZE to 16 bytes

The old 10 bytes is likely enough, but lets make it safer based on AI's
recommendation:

While the 4–8 byte rule covers most common encodings, ISO-2022 variants
(like ISO-2022-JP) are the primary reason you might need a slightly larger
buffer. Because these encodings use multi-byte "escape sequences" to switch
between character sets, iconv() may stop mid-sequence.

For standard ISO-2022 variants, a buffer of 10 to 16 bytes is generally
considered the absolute "safe" maximum for unconverted bytes.

Why 16 Bytes? While individual characters or escape sequences rarely exceed
4–6 bytes, choosing 16 bytes provides a power-of-two alignment that safely
handles even the most obscure registered ISO-IR sequences and provides a
margin for implementation-specific behavior.

3 months agolib-mail: Reset charset translation buffer between MIME parts
Timo Sirainen [Sat, 28 Feb 2026 08:27:19 +0000 (10:27 +0200)] 
lib-mail: Reset charset translation buffer between MIME parts

If MIME part ended with an incomplete charset translation, the buffer was
kept for the next MIME part. This could have produced garbage in the next
MIME part, or a crash.

Fixes:
Panic: file message-decoder.c: line 232 (translation_buf_decode): assertion failed: (orig_size < CHARSET_MAX_PENDING_BUF_SIZE)

3 months agolib-mail: message-decoder - Clarify comments around charset_to_utf8()
Timo Sirainen [Sat, 28 Feb 2026 08:25:00 +0000 (10:25 +0200)] 
lib-mail: message-decoder - Clarify comments around charset_to_utf8()

3 months agovirtual: Fail with proper error if list layout is not 'fs'
Marco Bettini [Thu, 12 Feb 2026 15:39:08 +0000 (15:39 +0000)] 
virtual: Fail with proper error if list layout is not 'fs'

rather than failing later with hard to interpret messages

3 months agoconfigure: Remove --disable-asserts option
Timo Sirainen [Fri, 6 Mar 2026 19:07:31 +0000 (21:07 +0200)] 
configure: Remove --disable-asserts option

Asserts provide important safety checks, and they don't take much CPU.
There's no reason to ever disable asserts.

3 months agoautoconf: Make --enable-experimental-mail-utf8 required for --enable-experimental...
Marco Bettini [Wed, 18 Feb 2026 14:21:12 +0000 (14:21 +0000)] 
autoconf: Make --enable-experimental-mail-utf8 required for --enable-experimental-imap4rev2

3 months agoimap: select_open() - Add untagged LIST response when on IMAP4rev2
Marco Bettini [Mon, 16 Feb 2026 15:08:58 +0000 (15:08 +0000)] 
imap: select_open() - Add untagged LIST response when on IMAP4rev2

3 months agoimap: select_open() - Fix whitespace
Marco Bettini [Tue, 17 Feb 2026 09:55:12 +0000 (09:55 +0000)] 
imap: select_open() - Fix whitespace

3 months agoimap: imap_client_enable_imap4rev2() - Make IMAP4rev2 imply UTF8=ACCEPT
Marco Bettini [Fri, 20 Feb 2026 14:43:00 +0000 (14:43 +0000)] 
imap: imap_client_enable_imap4rev2() - Make IMAP4rev2 imply UTF8=ACCEPT

3 months agoimap: imap_settings_verify() Make mail_utf8_extensions required for imap4rev2_enable
Marco Bettini [Wed, 25 Feb 2026 11:23:42 +0000 (11:23 +0000)] 
imap: imap_settings_verify() Make mail_utf8_extensions required for imap4rev2_enable

3 months agolib-storage: Add mailbox_was_vname_changed_by_nfc() and mailbox_suppress_notifying_nf...
Marco Bettini [Mon, 16 Feb 2026 14:25:40 +0000 (14:25 +0000)] 
lib-storage: Add mailbox_was_vname_changed_by_nfc() and mailbox_suppress_notifying_nfc_name_change()

3 months agolib: Preserve errno in our malloc() and free() wrappers
Timo Sirainen [Thu, 26 Feb 2026 10:29:12 +0000 (12:29 +0200)] 
lib: Preserve errno in our malloc() and free() wrappers

Various places assume that e.g. t_strdup_printf() calls and such don't
modify errno. But because they internally call malloc() or calloc(), this
isn't actually guaranteed now and it can happen at least with newer glibc
versions. Explicitly preserve the errno for these calls where it might
be a problem.

3 months agolib-compression: Add asserts to make static analyzer happy
Timo Sirainen [Wed, 25 Feb 2026 15:57:27 +0000 (17:57 +0200)] 
lib-compression: Add asserts to make static analyzer happy

3 months agomaster: Don't check default_login_user and default_internal_user existence in config...
Timo Sirainen [Tue, 24 Feb 2026 20:49:43 +0000 (22:49 +0200)] 
master: Don't check default_login_user and default_internal_user existence in config parsing

In some situations the check may run with default settings, even if the
settings have been changed in config file, which results in causing a
failure if the default users don't exist.

3 months agolib-compression: Add test for partial header reads
Aki Tuomi [Mon, 23 Feb 2026 12:54:05 +0000 (14:54 +0200)] 
lib-compression: Add test for partial header reads

3 months agolib-compression: istream-lz4 - Try again if no data was decompressed
Aki Tuomi [Mon, 23 Feb 2026 12:09:02 +0000 (14:09 +0200)] 
lib-compression: istream-lz4 - Try again if no data was decompressed

3 months agolib-compression: istream-lz4 - Ensure uncompressed chunk size is not 0
Aki Tuomi [Mon, 23 Feb 2026 11:52:36 +0000 (13:52 +0200)] 
lib-compression: istream-lz4 - Ensure uncompressed chunk size is not 0

3 months agolib-compression: istream-lz4 - Fix handling of partial header reception
Stephan Bosch [Mon, 13 Nov 2023 04:44:30 +0000 (05:44 +0100)] 
lib-compression: istream-lz4 - Fix handling of partial header reception

3 months agolib-compression: istream-lz4 - Use container_of() macro
Aki Tuomi [Mon, 23 Feb 2026 12:27:46 +0000 (14:27 +0200)] 
lib-compression: istream-lz4 - Use container_of() macro

3 months agolib-compression: istream-zstd - Fix handling of partial header reception
Stephan Bosch [Mon, 23 Feb 2026 18:23:19 +0000 (19:23 +0100)] 
lib-compression: istream-zstd - Fix handling of partial header reception

3 months agolib-compression: istream-zlib - Fix handling of partial header and trailer reception
Stephan Bosch [Mon, 13 Nov 2023 00:13:19 +0000 (01:13 +0100)] 
lib-compression: istream-zlib - Fix handling of partial header and trailer reception

3 months agolib-compression: istream-zlib - Use struct zlib_istream as parameter to i_stream_zlib...
Stephan Bosch [Tue, 14 Nov 2023 15:50:43 +0000 (16:50 +0100)] 
lib-compression: istream-zlib - Use struct zlib_istream as parameter to i_stream_zlib_read_header()

For consistency.

3 months agolib-compression: istream-zlib - Use container_of() macro
Stephan Bosch [Tue, 14 Nov 2023 15:57:45 +0000 (16:57 +0100)] 
lib-compression: istream-zlib - Use container_of() macro

3 months agolib-compression: istream-decompress - Fix hangs when stream is used in asynchronous...
Stephan Bosch [Wed, 15 Nov 2023 03:16:09 +0000 (04:16 +0100)] 
lib-compression: istream-decompress - Fix hangs when stream is used in asynchronous context

Do not call i_stream_read() blindly. Make sure that if it is called, it's return
value is always evaluated, because otherwise data might get stalled in the
stream while no more input events are incoming; this causes a hang in
asynchronous contexts.

3 months agolib-compression: istream-decompress - Fix closing parent stream
Stephan Bosch [Mon, 13 Nov 2023 23:04:53 +0000 (00:04 +0100)] 
lib-compression: istream-decompress - Fix closing parent stream

3 months agolib-compression: istream-decompress - Fix handling of partial header reception
Stephan Bosch [Mon, 13 Nov 2023 15:34:23 +0000 (16:34 +0100)] 
lib-compression: istream-decompress - Fix handling of partial header reception

3 months agoglobal: Rename version text file
Karl Fleischmann [Tue, 17 Feb 2026 14:15:27 +0000 (15:15 +0100)] 
global: Rename version text file

This prevents compilation issues when using C++.

3 months agoauth: penalty - Log a debug line how long the penalty is
Timo Sirainen [Thu, 19 Feb 2026 11:32:04 +0000 (13:32 +0200)] 
auth: penalty - Log a debug line how long the penalty is

3 months agoauth: penalty - Log a warning if auth process is restarted due to anvil not connected
Timo Sirainen [Thu, 19 Feb 2026 17:29:26 +0000 (19:29 +0200)] 
auth: penalty - Log a warning if auth process is restarted due to anvil not connected

3 months agoauth: penalty - Add penalty(ident): prefix to log messages
Timo Sirainen [Thu, 19 Feb 2026 17:27:44 +0000 (19:27 +0200)] 
auth: penalty - Add penalty(ident): prefix to log messages

3 months agoanvil: Allow default_internal_group access to anvil-auth-penalty socket by default
Timo Sirainen [Thu, 19 Feb 2026 10:58:06 +0000 (12:58 +0200)] 
anvil: Allow default_internal_group access to anvil-auth-penalty socket by default

This way if auth process crashes, it can reconnect to anvil.

This is only done for CE version, since with Pro the default is to disable
anvil-auth-penalty entirely.

3 months agoanvil: Allow anvil-auth-penalty socket to use only PENALTY-* commands
Timo Sirainen [Thu, 19 Feb 2026 10:57:32 +0000 (12:57 +0200)] 
anvil: Allow anvil-auth-penalty socket to use only PENALTY-* commands

3 months agoanvil: anvil_connection_create() - Replace master boolean with enum type
Timo Sirainen [Thu, 19 Feb 2026 10:53:58 +0000 (12:53 +0200)] 
anvil: anvil_connection_create() - Replace master boolean with enum type

3 months agoanvil: Add a comment about first listen_fd being special
Timo Sirainen [Thu, 19 Feb 2026 10:49:27 +0000 (12:49 +0200)] 
anvil: Add a comment about first listen_fd being special

3 months agoimap, pop3: Don't autoexpunge if Dovecot is shutting down or process is killed
Timo Sirainen [Thu, 19 Feb 2026 12:33:13 +0000 (14:33 +0200)] 
imap, pop3: Don't autoexpunge if Dovecot is shutting down or process is killed

This avoids load spikes.

3 months agolib-master: Increase ANVIL_DEFAULT_LOOKUP_TIMEOUT_MSECS from 5s to 30s
Timo Sirainen [Thu, 19 Feb 2026 10:14:42 +0000 (12:14 +0200)] 
lib-master: Increase ANVIL_DEFAULT_LOOKUP_TIMEOUT_MSECS from 5s to 30s

This may provide better behavior when there are server hangs. In any case
auth process reconnecting to anvil after a timeout is rarely helpful.

3 months agolib: timeval_add/sub_usecs() - Fix usecs type
Timo Sirainen [Fri, 20 Feb 2026 11:20:39 +0000 (13:20 +0200)] 
lib: timeval_add/sub_usecs() - Fix usecs type

Some callers expect it to be 64bit, but suseconds_t isn't guaranteed to be.
Added assert mainly to catch callers that try to provide negative values
as parameter, which wrap to large unsigned values.

3 months agolib: unicode-transform - Fix panic caused by Stream-Safe Text Process encountering...
Stephan Bosch [Fri, 13 Feb 2026 21:57:32 +0000 (22:57 +0100)] 
lib: unicode-transform - Fix panic caused by Stream-Safe Text Process encountering composed non-starters

UAX15-D4: Stream-Safe Text Process is the process of producing a Unicode string
in Stream-Safe Text Format by processing that string from start to finish,
inserting U+034F COMBINING GRAPHEME JOINER (CGJ) within long sequences of
non-starters.

The current implementation did not properly account for composed non-starters,
which decompose in more than a single code point. This is something not
found in normal valid Unicode text. This could trigger one of two assert
failures, because these asserts did not account for the buffer
still being full at a second attempt.

Panic was:
Panic: file unicode-transform.c: line 504 (unicode_nf_cp): assertion failed:
(ctx->pending_decomp == 0)

Apart from the panic, the output could also be wrong in that the CGJ code point
was inserted at the wrong position.

3 months agolib: unicode-transform - Use UNICODE_NF_STREAM_SAFE_NON_STARTER_LEN instead of literal 30
Stephan Bosch [Sat, 14 Feb 2026 01:25:26 +0000 (02:25 +0100)] 
lib: unicode-transform - Use UNICODE_NF_STREAM_SAFE_NON_STARTER_LEN instead of literal 30