123456789101112131415161718192021222324252627282930 |
- From af48f6fec9a7b6374d4153c5db894d4a1f349645 Mon Sep 17 00:00:00 2001
- From: Jonas Jelten <jj@sft.mx>
- Date: Sat, 2 Feb 2019 20:53:37 +0100
- Subject: [PATCH] db_gdbm: fix gdbm_errno overlay from gdbm_close
- `gdbm_close` also sets gdbm_errno since version 1.17.
- This leads to a problem in `libsasl` as the `gdbm_close` incovation overlays
- the `gdbm_errno` value which is then later used for the error handling.
- ---
- sasldb/db_gdbm.c | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
- diff --git a/sasldb/db_gdbm.c b/sasldb/db_gdbm.c
- index ee56a6bf..c908808e 100644
- --- a/sasldb/db_gdbm.c
- +++ b/sasldb/db_gdbm.c
- @@ -107,9 +107,11 @@ int _sasldb_getdata(const sasl_utils_t *utils,
- gkey.dptr = key;
- gkey.dsize = key_len;
- gvalue = gdbm_fetch(db, gkey);
- + int 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);
|