r14029: Fix resource leak in error codepath. Coverity CID #64.
authorJeremy Allison <jra@samba.org>
Wed, 8 Mar 2006 07:20:10 +0000 (07:20 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:52:37 +0000 (13:52 -0500)
Jeremy.
(This used to be commit d2e9d5b34baee90060ee9131b3da903309625a56)

source4/lib/tdb/common/traverse.c

index dc1060c6d0d34c1fba1bf59e8db0ddf2b56ef229..4792af112202f3b7ae8b6b03d076760258c581ee 100644 (file)
@@ -289,10 +289,14 @@ TDB_DATA tdb_nextkey(struct tdb_context *tdb, TDB_DATA oldkey)
                                            rec.key_len))
                    || memcmp(k, oldkey.dptr, oldkey.dsize) != 0) {
                        /* No, it wasn't: unlock it and start from scratch */
-                       if (tdb_unlock_record(tdb, tdb->travlocks.off) != 0)
+                       if (tdb_unlock_record(tdb, tdb->travlocks.off) != 0) {
+                               SAFE_FREE(k);
                                return tdb_null;
-                       if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0)
+                       }
+                       if (tdb_unlock(tdb, tdb->travlocks.hash, F_WRLCK) != 0) {
+                               SAFE_FREE(k);
                                return tdb_null;
+                       }
                        tdb->travlocks.off = 0;
                }