import dovecot-2.3.16-3.el8
This commit is contained in:
parent
4eb6e2fb3c
commit
df423e2991
131
SOURCES/dovecot-2.3.19.1-7bad6a24.patch
Normal file
131
SOURCES/dovecot-2.3.19.1-7bad6a24.patch
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
From 7bad6a24160e34bce8f10e73dbbf9e5fbbcd1904 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Timo Sirainen <timo.sirainen@open-xchange.com>
|
||||||
|
Date: Mon, 9 May 2022 15:23:33 +0300
|
||||||
|
Subject: [PATCH] auth: Fix handling passdbs with identical driver/args but
|
||||||
|
different mechanisms/username_filter
|
||||||
|
|
||||||
|
The passdb was wrongly deduplicated in this situation, causing wrong
|
||||||
|
mechanisms or username_filter setting to be used. This would be a rather
|
||||||
|
unlikely configuration though.
|
||||||
|
|
||||||
|
Fixed by moving mechanisms and username_filter from struct passdb_module
|
||||||
|
to struct auth_passdb, which is where they should have been in the first
|
||||||
|
place.
|
||||||
|
---
|
||||||
|
src/auth/auth-request.c | 6 +++---
|
||||||
|
src/auth/auth.c | 18 ++++++++++++++++++
|
||||||
|
src/auth/auth.h | 5 +++++
|
||||||
|
src/auth/passdb.c | 15 ++-------------
|
||||||
|
src/auth/passdb.h | 4 ----
|
||||||
|
5 files changed, 28 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c
|
||||||
|
index cd08b1fa02..0ca29f3674 100644
|
||||||
|
--- a/src/auth/auth-request.c
|
||||||
|
+++ b/src/auth/auth-request.c
|
||||||
|
@@ -534,8 +534,8 @@ auth_request_want_skip_passdb(struct auth_request *request,
|
||||||
|
struct auth_passdb *passdb)
|
||||||
|
{
|
||||||
|
/* if mechanism is not supported, skip */
|
||||||
|
- const char *const *mechs = passdb->passdb->mechanisms;
|
||||||
|
- const char *const *username_filter = passdb->passdb->username_filter;
|
||||||
|
+ const char *const *mechs = passdb->mechanisms;
|
||||||
|
+ const char *const *username_filter = passdb->username_filter;
|
||||||
|
const char *username;
|
||||||
|
|
||||||
|
username = request->fields.user;
|
||||||
|
@@ -548,7 +548,7 @@ auth_request_want_skip_passdb(struct auth_request *request,
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
- if (passdb->passdb->username_filter != NULL &&
|
||||||
|
+ if (passdb->username_filter != NULL &&
|
||||||
|
!auth_request_username_accepted(username_filter, username)) {
|
||||||
|
auth_request_log_debug(request,
|
||||||
|
request->mech != NULL ? AUTH_SUBSYS_MECH
|
||||||
|
diff --git a/src/auth/auth.c b/src/auth/auth.c
|
||||||
|
index f2f3fda20c..9f6c4ba60c 100644
|
||||||
|
--- a/src/auth/auth.c
|
||||||
|
+++ b/src/auth/auth.c
|
||||||
|
@@ -99,6 +99,24 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set,
|
||||||
|
auth_passdb->override_fields_tmpl =
|
||||||
|
passdb_template_build(auth->pool, set->override_fields);
|
||||||
|
|
||||||
|
+ if (*set->mechanisms == '\0') {
|
||||||
|
+ auth_passdb->mechanisms = NULL;
|
||||||
|
+ } else if (strcasecmp(set->mechanisms, "none") == 0) {
|
||||||
|
+ auth_passdb->mechanisms = (const char *const[]){ NULL };
|
||||||
|
+ } else {
|
||||||
|
+ auth_passdb->mechanisms =
|
||||||
|
+ (const char *const *)p_strsplit_spaces(auth->pool,
|
||||||
|
+ set->mechanisms, " ,");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (*set->username_filter == '\0') {
|
||||||
|
+ auth_passdb->username_filter = NULL;
|
||||||
|
+ } else {
|
||||||
|
+ auth_passdb->username_filter =
|
||||||
|
+ (const char *const *)p_strsplit_spaces(auth->pool,
|
||||||
|
+ set->username_filter, " ,");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
/* for backwards compatibility: */
|
||||||
|
if (set->pass)
|
||||||
|
auth_passdb->result_success = AUTH_DB_RULE_CONTINUE;
|
||||||
|
diff --git a/src/auth/auth.h b/src/auth/auth.h
|
||||||
|
index f700e29d5c..460a179765 100644
|
||||||
|
--- a/src/auth/auth.h
|
||||||
|
+++ b/src/auth/auth.h
|
||||||
|
@@ -41,6 +41,11 @@ struct auth_passdb {
|
||||||
|
struct passdb_template *default_fields_tmpl;
|
||||||
|
struct passdb_template *override_fields_tmpl;
|
||||||
|
|
||||||
|
+ /* Supported authentication mechanisms, NULL is all, {NULL} is none */
|
||||||
|
+ const char *const *mechanisms;
|
||||||
|
+ /* Username filter, NULL is no filter */
|
||||||
|
+ const char *const *username_filter;
|
||||||
|
+
|
||||||
|
enum auth_passdb_skip skip;
|
||||||
|
enum auth_db_rule result_success;
|
||||||
|
enum auth_db_rule result_failure;
|
||||||
|
diff --git a/src/auth/passdb.c b/src/auth/passdb.c
|
||||||
|
index eb4ac8ae82..f5eed1af4f 100644
|
||||||
|
--- a/src/auth/passdb.c
|
||||||
|
+++ b/src/auth/passdb.c
|
||||||
|
@@ -224,19 +224,8 @@ passdb_preinit(pool_t pool, const struct auth_passdb_settings *set)
|
||||||
|
passdb->id = ++auth_passdb_id;
|
||||||
|
passdb->iface = *iface;
|
||||||
|
passdb->args = p_strdup(pool, set->args);
|
||||||
|
- if (*set->mechanisms == '\0') {
|
||||||
|
- passdb->mechanisms = NULL;
|
||||||
|
- } else if (strcasecmp(set->mechanisms, "none") == 0) {
|
||||||
|
- passdb->mechanisms = (const char *const[]){NULL};
|
||||||
|
- } else {
|
||||||
|
- passdb->mechanisms = (const char* const*)p_strsplit_spaces(pool, set->mechanisms, " ,");
|
||||||
|
- }
|
||||||
|
-
|
||||||
|
- if (*set->username_filter == '\0') {
|
||||||
|
- passdb->username_filter = NULL;
|
||||||
|
- } else {
|
||||||
|
- passdb->username_filter = (const char* const*)p_strsplit_spaces(pool, set->username_filter, " ,");
|
||||||
|
- }
|
||||||
|
+ /* NOTE: if anything else than driver & args are added here,
|
||||||
|
+ passdb_find() also needs to be updated. */
|
||||||
|
array_push_back(&passdb_modules, &passdb);
|
||||||
|
return passdb;
|
||||||
|
}
|
||||||
|
diff --git a/src/auth/passdb.h b/src/auth/passdb.h
|
||||||
|
index 2e95328e5c..e466a9fdb6 100644
|
||||||
|
--- a/src/auth/passdb.h
|
||||||
|
+++ b/src/auth/passdb.h
|
||||||
|
@@ -63,10 +63,6 @@ struct passdb_module {
|
||||||
|
/* Default password scheme for this module.
|
||||||
|
If default_cache_key is set, must not be NULL. */
|
||||||
|
const char *default_pass_scheme;
|
||||||
|
- /* Supported authentication mechanisms, NULL is all, [NULL] is none*/
|
||||||
|
- const char *const *mechanisms;
|
||||||
|
- /* Username filter, NULL is no filter */
|
||||||
|
- const char *const *username_filter;
|
||||||
|
|
||||||
|
/* If blocking is set to TRUE, use child processes to access
|
||||||
|
this passdb. */
|
@ -5,7 +5,7 @@ Name: dovecot
|
|||||||
Epoch: 1
|
Epoch: 1
|
||||||
Version: 2.3.16
|
Version: 2.3.16
|
||||||
%global prever %{nil}
|
%global prever %{nil}
|
||||||
Release: 2%{?dist}
|
Release: 3%{?dist}
|
||||||
#dovecot itself is MIT, a few sources are PD, pigeonhole is LGPLv2
|
#dovecot itself is MIT, a few sources are PD, pigeonhole is LGPLv2
|
||||||
License: MIT and LGPLv2
|
License: MIT and LGPLv2
|
||||||
Group: System Environment/Daemons
|
Group: System Environment/Daemons
|
||||||
@ -47,6 +47,9 @@ Patch14: dovecot-2.3.6-opensslhmac.patch
|
|||||||
Patch15: dovecot-2.3.16-ftbfsbigend.patch
|
Patch15: dovecot-2.3.16-ftbfsbigend.patch
|
||||||
Patch16: dovecot-2.3.16-keeplzma.patch
|
Patch16: dovecot-2.3.16-keeplzma.patch
|
||||||
|
|
||||||
|
# from upstream, for <= 2.3.19.1, rhbz#2106232
|
||||||
|
Patch17: dovecot-2.3.19.1-7bad6a24.patch
|
||||||
|
|
||||||
Source15: prestartscript
|
Source15: prestartscript
|
||||||
|
|
||||||
BuildRequires: openssl-devel, pam-devel, zlib-devel, bzip2-devel, libcap-devel
|
BuildRequires: openssl-devel, pam-devel, zlib-devel, bzip2-devel, libcap-devel
|
||||||
@ -153,6 +156,7 @@ This package provides the development files for dovecot.
|
|||||||
%patch14 -p1 -b .opensslhmac
|
%patch14 -p1 -b .opensslhmac
|
||||||
%patch15 -p1 -b .ftbfsbigend
|
%patch15 -p1 -b .ftbfsbigend
|
||||||
%patch16 -p1 -b .keeplzma
|
%patch16 -p1 -b .keeplzma
|
||||||
|
%patch17 -p1 -b .7bad6a24
|
||||||
pushd dovecot-2*3-pigeonhole-%{pigeonholever}
|
pushd dovecot-2*3-pigeonhole-%{pigeonholever}
|
||||||
|
|
||||||
popd
|
popd
|
||||||
@ -233,7 +237,6 @@ mv $RPM_BUILD_ROOT/%{_docdir}/%{name} $RPM_BUILD_ROOT/%{_docdir}/%{name}-pigeonh
|
|||||||
install -m 644 AUTHORS ChangeLog COPYING COPYING.LGPL INSTALL NEWS README $RPM_BUILD_ROOT/%{_docdir}/%{name}-pigeonhole
|
install -m 644 AUTHORS ChangeLog COPYING COPYING.LGPL INSTALL NEWS README $RPM_BUILD_ROOT/%{_docdir}/%{name}-pigeonhole
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
|
||||||
%if %{?fedora}00%{?rhel} < 6
|
%if %{?fedora}00%{?rhel} < 6
|
||||||
sed -i 's|password-auth|system-auth|' %{SOURCE2}
|
sed -i 's|password-auth|system-auth|' %{SOURCE2}
|
||||||
%endif
|
%endif
|
||||||
@ -517,6 +520,9 @@ make check
|
|||||||
%{_libdir}/%{name}/dict/libdriver_pgsql.so
|
%{_libdir}/%{name}/dict/libdriver_pgsql.so
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jul 19 2022 Michal Hlavinka <mhlavink@redhat.com> - 1:2.3.16-3
|
||||||
|
- fix possible privilege escalation when similar master and non-master passdbs are used (#2106231)
|
||||||
|
|
||||||
* Wed Dec 08 2021 Michal Hlavinka <mhlavink@redhat.com> - 1:2.3.16-2
|
* Wed Dec 08 2021 Michal Hlavinka <mhlavink@redhat.com> - 1:2.3.16-2
|
||||||
- do not disable xz/lzma for now despite being deprecated
|
- do not disable xz/lzma for now despite being deprecated
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user