Preserve GDBM error to correctly deal with GDBM sasldb
Related: rhbz#1952926
This commit is contained in:
parent
5618652139
commit
370de217df
@ -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
|
case "$dblib" in
|
||||||
diff -up cyrus-sasl-2.1.27/sasldb/db_gdbm.c.frombdb cyrus-sasl-2.1.27/sasldb/db_gdbm.c
|
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.frombdb 2017-07-13 14:34:03.000000000 +0200
|
||||||
+++ cyrus-sasl-2.1.27/sasldb/db_gdbm.c 2021-04-28 15:51:52.107086685 +0200
|
+++ cyrus-sasl-2.1.27/sasldb/db_gdbm.c 2021-06-04 13:04:24.098206887 +0200
|
||||||
@@ -99,6 +99,9 @@ int _sasldb_getdata(const sasl_utils_t *
|
@@ -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);
|
db = gdbm_open((char *)path, 0, GDBM_READER, S_IRUSR | S_IWUSR, NULL);
|
||||||
if (! db) {
|
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",
|
utils->seterror(cntxt, 0, "Could not open %s: gdbm_errno=%d",
|
||||||
path, gdbm_errno);
|
path, gdbm_errno);
|
||||||
result = SASL_FAIL;
|
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) {
|
if (! db) {
|
||||||
utils->log(conn, SASL_LOG_ERR,
|
utils->log(conn, SASL_LOG_ERR,
|
||||||
"SASL error opening password file. "
|
"SASL error opening password file. "
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
Summary: The Cyrus SASL library
|
Summary: The Cyrus SASL library
|
||||||
Name: cyrus-sasl
|
Name: cyrus-sasl
|
||||||
Version: 2.1.27
|
Version: 2.1.27
|
||||||
Release: 12%{?dist}
|
Release: 13%{?dist}
|
||||||
License: BSD with advertising
|
License: BSD with advertising
|
||||||
URL: https://www.cyrusimap.org/sasl/
|
URL: https://www.cyrusimap.org/sasl/
|
||||||
|
|
||||||
@ -393,6 +393,10 @@ getent passwd %{username} >/dev/null || useradd -r -g %{username} -d %{homedir}
|
|||||||
%{_sbindir}/sasl2-shared-mechlist
|
%{_sbindir}/sasl2-shared-mechlist
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Aug 10 2021 Dmitry Belyavskiy <dbelyavs@redhat.com> - 2.1.27-13
|
||||||
|
- Preserve GDBM error to correctly deal with GDBM sasldb
|
||||||
|
- Related: rhbz#1952926
|
||||||
|
|
||||||
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.27-12
|
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.1.27-12
|
||||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user