summaryrefslogtreecommitdiffstats
path: root/source/tdb
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2002-11-23 02:52:36 +0000
committerJeremy Allison <jra@samba.org>2002-11-23 02:52:36 +0000
commit5d5762d1787db4392d2dff16024097c638b2d494 (patch)
tree5654c03057851dd9344d98f0eaa12111da9b3667 /source/tdb
parente93bd375b9e03d9d7038e2be66dd624f91118214 (diff)
downloadsamba-5d5762d1787db4392d2dff16024097c638b2d494.tar.gz
samba-5d5762d1787db4392d2dff16024097c638b2d494.tar.xz
samba-5d5762d1787db4392d2dff16024097c638b2d494.zip
Lots of fixes for error paths where tdb_fetch() data need freeing.
Found via a post from Arcady Chernyak <Arcady.Chernyak@efi.com>. Jeremy.
Diffstat (limited to 'source/tdb')
-rw-r--r--source/tdb/tdbutil.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/source/tdb/tdbutil.c b/source/tdb/tdbutil.c
index 5498872f8ab..12db8b337f7 100644
--- a/source/tdb/tdbutil.c
+++ b/source/tdb/tdbutil.c
@@ -139,9 +139,11 @@ int32 tdb_fetch_int32_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len)
key.dptr = keyval;
key.dsize = len;
data = tdb_fetch(tdb, key);
- if (!data.dptr || data.dsize != sizeof(int32))
+ if (!data.dptr || data.dsize != sizeof(int32)) {
+ SAFE_FREE(data.dptr);
return -1;
-
+ }
+
ret = IVAL(data.dptr,0);
SAFE_FREE(data.dptr);
return ret;
@@ -198,9 +200,11 @@ BOOL tdb_fetch_uint32_byblob(TDB_CONTEXT *tdb, char *keyval, size_t len, uint32
key.dptr = keyval;
key.dsize = len;
data = tdb_fetch(tdb, key);
- if (!data.dptr || data.dsize != sizeof(uint32))
+ if (!data.dptr || data.dsize != sizeof(uint32)) {
+ SAFE_FREE(data.dptr);
return False;
-
+ }
+
*value = IVAL(data.dptr,0);
SAFE_FREE(data.dptr);
return True;