Index: passdb/secrets.c =================================================================== --- passdb/secrets.c (Revision 16196) +++ passdb/secrets.c (Revision 16197) @@ -1174,8 +1174,6 @@ return False; } - tdb_close(tdb_sc); - pdc = TALLOC_ZERO_P(mem_ctx, struct dcinfo); /* Retrieve the record. */ @@ -1193,6 +1191,7 @@ if (ret == -1 || l1 != 8 || l2 != 8 || l3 != 8 || l4 != 16 || l5 != 16) { /* Bad record - delete it. */ tdb_delete_bystring(tdb_sc, keystr); + tdb_close(tdb_sc); TALLOC_FREE(keystr); TALLOC_FREE(pdc); SAFE_FREE(pseed_chal); @@ -1204,6 +1203,8 @@ return False; } + tdb_close(tdb_sc); + memcpy(pdc->seed_chal.data, pseed_chal, 8); memcpy(pdc->clnt_chal.data, pclnt_chal, 8); memcpy(pdc->srv_chal.data, psrv_chal, 8);