(NDBM_open): in case of error, close database

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@15509 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Love Hörnquist Åstrand
2005-06-23 13:37:57 +00:00
parent c5ac9b9af6
commit 1f54737a4c

View File

@@ -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)