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

source3/tdb/tdb.c

index f07f474716fd5a20456e45ee4fd19608460cd173..4303976087d1dd9e59ac7f2ef7338d1dbfd78e05 100644 (file)
@@ -1458,10 +1458,14 @@ TDB_DATA tdb_nextkey(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 (unlock_record(tdb, tdb->travlocks.off) != 0)
+                       if (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;
                }