From 1f54737a4c34cdfda8f31dd3091607a733e238d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Love=20H=C3=B6rnquist=20=C3=85strand?= Date: Thu, 23 Jun 2005 13:37:57 +0000 Subject: [PATCH] (NDBM_open): in case of error, close database git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15509 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/hdb/ndbm.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/lib/hdb/ndbm.c b/lib/hdb/ndbm.c index f8b1f8ffc..fced9d654 100644 --- a/lib/hdb/ndbm.c +++ b/lib/hdb/ndbm.c @@ -264,6 +264,17 @@ NDBM__del(krb5_context context, HDB *db, krb5_data key) return 0; } + +static krb5_error_code +NDBM_close(krb5_context context, HDB *db) +{ + struct ndbm_db *d = db->hdb_db; + dbm_close(d->db); + close(d->lock_fd); + free(d); + return 0; +} + static krb5_error_code NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode) { @@ -308,19 +319,16 @@ NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode) ret = hdb_init_db(context, db); if(ret == HDB_ERR_NOENTRY) return 0; + if (ret) { + NDBM_close(context, db); + krb5_set_error_string(context, "hdb_open: failed %s database %s", + (flags & O_ACCMODE) == O_RDONLY ? + "checking format of" : "initialize", + db->hdb_name); + } return ret; } -static krb5_error_code -NDBM_close(krb5_context context, HDB *db) -{ - struct ndbm_db *d = db->hdb_db; - dbm_close(d->db); - close(d->lock_fd); - free(d); - return 0; -} - krb5_error_code hdb_ndbm_create(krb5_context context, HDB **db, const char *filename)