diff options
author | Jeremy Allison <jra@samba.org> | 2002-11-23 02:52:36 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2002-11-23 02:52:36 +0000 |
commit | 5d5762d1787db4392d2dff16024097c638b2d494 (patch) | |
tree | 5654c03057851dd9344d98f0eaa12111da9b3667 /source/tdb | |
parent | e93bd375b9e03d9d7038e2be66dd624f91118214 (diff) | |
download | samba-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.c | 12 |
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; |