diff --git a/lib/hdb/ndbm.c b/lib/hdb/ndbm.c index 631d3a11c..314c48233 100644 --- a/lib/hdb/ndbm.c +++ b/lib/hdb/ndbm.c @@ -240,6 +240,7 @@ NDBM__del(krb5_context context, HDB *db, krb5_data key) static krb5_error_code NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode) { + krb5_error_code ret; struct ndbm_db *d = malloc(sizeof(*d)); char *lock_file; if(d == NULL) @@ -263,7 +264,13 @@ NDBM_open(krb5_context context, HDB *db, int flags, mode_t mode) return errno; } db->db = d; - return 0; + if((flags & O_ACCMODE) == O_RDONLY) + ret = hdb_check_db_format(context, db); + else + ret = hdb_init_db(context, db); + if(ret == HDB_ERR_NOENTRY) + return 0; + return ret; } static krb5_error_code