(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:
@@ -264,6 +264,17 @@ NDBM__del(krb5_context context, HDB *db, krb5_data key)
|
|||||||
return 0;
|
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
|
static krb5_error_code
|
||||||
NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode)
|
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);
|
ret = hdb_init_db(context, db);
|
||||||
if(ret == HDB_ERR_NOENTRY)
|
if(ret == HDB_ERR_NOENTRY)
|
||||||
return 0;
|
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;
|
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
|
krb5_error_code
|
||||||
hdb_ndbm_create(krb5_context context, HDB **db,
|
hdb_ndbm_create(krb5_context context, HDB **db,
|
||||||
const char *filename)
|
const char *filename)
|
||||||
|
Reference in New Issue
Block a user