We need to preserve GDBM error
on closing DB to analyze real fetch error. Borrowed from https://github.com/cyrusimap/cyrus-sasl/pull/554 Resolves: rhbz#1947971
This commit is contained in:
parent
b37417ce44
commit
aea2abf973
@ -1,6 +1,6 @@
|
||||
diff -up cyrus-sasl-2.1.27/configure.ac.frombdb cyrus-sasl-2.1.27/configure.ac
|
||||
--- cyrus-sasl-2.1.27/configure.ac.frombdb 2021-04-28 15:36:37.313675329 +0200
|
||||
+++ cyrus-sasl-2.1.27/configure.ac 2021-04-28 15:36:37.320675385 +0200
|
||||
--- cyrus-sasl-2.1.27/configure.ac.frombdb 2021-06-04 13:02:07.790112263 +0200
|
||||
+++ cyrus-sasl-2.1.27/configure.ac 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -1091,6 +1091,9 @@ AC_SUBST(SASL_STATIC_SRCS)
|
||||
AC_SUBST(SASL_STATIC_OBJS)
|
||||
AC_SUBST(SASL_STATIC_LIBS)
|
||||
@ -13,7 +13,7 @@ diff -up cyrus-sasl-2.1.27/configure.ac.frombdb cyrus-sasl-2.1.27/configure.ac
|
||||
plugindir=$withval,
|
||||
diff -up cyrus-sasl-2.1.27/m4/berkdb.m4.frombdb cyrus-sasl-2.1.27/m4/berkdb.m4
|
||||
--- cyrus-sasl-2.1.27/m4/berkdb.m4.frombdb 2016-01-29 18:35:35.000000000 +0100
|
||||
+++ cyrus-sasl-2.1.27/m4/berkdb.m4 2021-05-04 15:58:12.266748283 +0200
|
||||
+++ cyrus-sasl-2.1.27/m4/berkdb.m4 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -286,3 +286,10 @@ AC_DEFUN([CYRUS_BERKELEY_DB_CHK],
|
||||
|
||||
CPPFLAGS=$cmu_save_CPPFLAGS
|
||||
@ -27,7 +27,7 @@ diff -up cyrus-sasl-2.1.27/m4/berkdb.m4.frombdb cyrus-sasl-2.1.27/m4/berkdb.m4
|
||||
+])
|
||||
diff -up cyrus-sasl-2.1.27/m4/sasldb.m4.frombdb cyrus-sasl-2.1.27/m4/sasldb.m4
|
||||
--- cyrus-sasl-2.1.27/m4/sasldb.m4.frombdb 2017-07-13 20:45:19.000000000 +0200
|
||||
+++ cyrus-sasl-2.1.27/m4/sasldb.m4 2021-04-28 15:36:37.321675394 +0200
|
||||
+++ cyrus-sasl-2.1.27/m4/sasldb.m4 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -111,7 +111,7 @@ AC_MSG_RESULT($dblib)
|
||||
SASL_DB_BACKEND="db_${dblib}.lo"
|
||||
SASL_DB_BACKEND_STATIC="db_${dblib}.o allockey.o"
|
||||
@ -38,9 +38,17 @@ diff -up cyrus-sasl-2.1.27/m4/sasldb.m4.frombdb cyrus-sasl-2.1.27/m4/sasldb.m4
|
||||
|
||||
case "$dblib" in
|
||||
diff -up cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb cyrus-sasl-2.1.27/sasldb/db_gdbm.c
|
||||
--- cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb 2021-04-28 15:49:23.729883976 +0200
|
||||
+++ cyrus-sasl-2.1.27/sasldb/db_gdbm.c 2021-04-28 15:51:52.107086685 +0200
|
||||
@@ -99,6 +99,9 @@ int _sasldb_getdata(const sasl_utils_t *
|
||||
--- cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb 2017-07-13 14:34:03.000000000 +0200
|
||||
+++ cyrus-sasl-2.1.27/sasldb/db_gdbm.c 2021-06-04 13:04:24.098206887 +0200
|
||||
@@ -67,6 +67,7 @@ int _sasldb_getdata(const sasl_utils_t *
|
||||
void *cntxt;
|
||||
sasl_getopt_t *getopt;
|
||||
const char *path = SASL_DB_PATH;
|
||||
+ int fetch_errno = 0;
|
||||
|
||||
if (!utils) return SASL_BADPARAM;
|
||||
if (!authid || !propName || !realm || !out || !max_out) {
|
||||
@@ -99,6 +100,9 @@ int _sasldb_getdata(const sasl_utils_t *
|
||||
}
|
||||
db = gdbm_open((char *)path, 0, GDBM_READER, S_IRUSR | S_IWUSR, NULL);
|
||||
if (! db) {
|
||||
@ -50,7 +58,19 @@ diff -up cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb cyrus-sasl-2.1.27/sasldb/db_
|
||||
utils->seterror(cntxt, 0, "Could not open %s: gdbm_errno=%d",
|
||||
path, gdbm_errno);
|
||||
result = SASL_FAIL;
|
||||
@@ -186,7 +189,8 @@ int _sasldb_putdata(const sasl_utils_t *
|
||||
@@ -107,9 +111,10 @@ int _sasldb_getdata(const sasl_utils_t *
|
||||
gkey.dptr = key;
|
||||
gkey.dsize = key_len;
|
||||
gvalue = gdbm_fetch(db, gkey);
|
||||
+ fetch_errno = gdbm_errno;
|
||||
gdbm_close(db);
|
||||
if (! gvalue.dptr) {
|
||||
- if (gdbm_errno == GDBM_ITEM_NOT_FOUND) {
|
||||
+ if (fetch_errno == GDBM_ITEM_NOT_FOUND) {
|
||||
utils->seterror(conn, SASL_NOLOG,
|
||||
"user: %s@%s property: %s not found in %s",
|
||||
authid, realm, propName, path);
|
||||
@@ -186,7 +191,8 @@ int _sasldb_putdata(const sasl_utils_t *
|
||||
if (! db) {
|
||||
utils->log(conn, SASL_LOG_ERR,
|
||||
"SASL error opening password file. "
|
||||
@ -60,7 +80,7 @@ diff -up cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb cyrus-sasl-2.1.27/sasldb/db_
|
||||
utils->seterror(conn, 0, "Could not open %s for write: gdbm_errno=%d",
|
||||
path, gdbm_errno);
|
||||
result = SASL_FAIL;
|
||||
@@ -298,6 +302,9 @@ sasldb_handle _sasldb_getkeyhandle(const
|
||||
@@ -298,6 +304,9 @@ sasldb_handle _sasldb_getkeyhandle(const
|
||||
db = gdbm_open((char *)path, 0, GDBM_READER, S_IRUSR | S_IWUSR, NULL);
|
||||
|
||||
if(!db) {
|
||||
@ -71,8 +91,8 @@ diff -up cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb cyrus-sasl-2.1.27/sasldb/db_
|
||||
path, gdbm_errno);
|
||||
return NULL;
|
||||
diff -up cyrus-sasl-2.1.27/utils/cyrusbdb2current.8.frombdb cyrus-sasl-2.1.27/utils/cyrusbdb2current.8
|
||||
--- cyrus-sasl-2.1.27/utils/cyrusbdb2current.8.frombdb 2021-04-28 15:36:37.321675394 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/cyrusbdb2current.8 2021-04-28 15:36:37.321675394 +0200
|
||||
--- cyrus-sasl-2.1.27/utils/cyrusbdb2current.8.frombdb 2021-06-04 13:02:07.798112327 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/cyrusbdb2current.8 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -0,0 +1,159 @@
|
||||
+.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40)
|
||||
+.\"
|
||||
@ -234,8 +254,8 @@ diff -up cyrus-sasl-2.1.27/utils/cyrusbdb2current.8.frombdb cyrus-sasl-2.1.27/ut
|
||||
+.PP
|
||||
+rfc4422 \- Simple Authentication and Security Layer (\s-1SASL\s0)
|
||||
diff -up cyrus-sasl-2.1.27/utils/cyrusbdb2current.c.frombdb cyrus-sasl-2.1.27/utils/cyrusbdb2current.c
|
||||
--- cyrus-sasl-2.1.27/utils/cyrusbdb2current.c.frombdb 2021-04-28 15:36:37.321675394 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/cyrusbdb2current.c 2021-04-28 15:36:37.321675394 +0200
|
||||
--- cyrus-sasl-2.1.27/utils/cyrusbdb2current.c.frombdb 2021-06-04 13:02:07.798112327 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/cyrusbdb2current.c 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -0,0 +1,282 @@
|
||||
+#include <config.h>
|
||||
+
|
||||
@ -521,7 +541,7 @@ diff -up cyrus-sasl-2.1.27/utils/cyrusbdb2current.c.frombdb cyrus-sasl-2.1.27/ut
|
||||
+}
|
||||
diff -up cyrus-sasl-2.1.27/utils/Makefile.am.frombdb cyrus-sasl-2.1.27/utils/Makefile.am
|
||||
--- cyrus-sasl-2.1.27/utils/Makefile.am.frombdb 2018-10-05 16:40:16.000000000 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/Makefile.am 2021-04-28 15:36:37.321675394 +0200
|
||||
+++ cyrus-sasl-2.1.27/utils/Makefile.am 2021-06-04 13:02:07.798112327 +0200
|
||||
@@ -46,14 +46,14 @@ all_sasl_libs = ../lib/libsasl2.la $(SAS
|
||||
all_sasl_static_libs = ../lib/.libs/libsasl2.a $(SASL_DB_LIB) $(LIB_SOCKET) $(GSSAPIBASE_LIBS) $(GSSAPI_LIBS) $(SASL_KRB_LIB) $(LIB_DES) $(PLAIN_LIBS) $(SRP_LIBS) $(LIB_MYSQL) $(LIB_PGSQL) $(LIB_SQLITE)
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
Summary: The Cyrus SASL library
|
||||
Name: cyrus-sasl
|
||||
Version: 2.1.27
|
||||
Release: 11%{?dist}
|
||||
Release: 12%{?dist}
|
||||
License: BSD with advertising
|
||||
URL: https://www.cyrusimap.org/sasl/
|
||||
|
||||
@ -389,6 +389,11 @@ getent passwd %{username} >/dev/null || useradd -r -g %{username} -d %{homedir}
|
||||
%{_sbindir}/sasl2-shared-mechlist
|
||||
|
||||
%changelog
|
||||
* Fri Jun 04 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 2.1.27-12
|
||||
- Incorporate the upstream gdbm specific patch from
|
||||
https://github.com/cyrusimap/cyrus-sasl/pull/554
|
||||
- Resolves rhbz#1947971
|
||||
|
||||
* Wed Apr 28 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 2.1.27-11
|
||||
- Set default sasldb database to GDBM instead of BerkeleyDB
|
||||
- Add the migration tool from BerkeleyDB
|
||||
|
Loading…
Reference in New Issue
Block a user