From f023d6129b7bf0d972f2bb9ecc025d316e55c8ae Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Sat, 23 Nov 2002 02:52:38 +0000 Subject: Lots of fixes for error paths where tdb_fetch() data need freeing. Found via a post from Arcady Chernyak . Jeremy. (This used to be commit 19f86f1f72aca924e9e320e20a175b5d21de45ad) --- source3/tdb/tdbutil.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'source3/tdb') diff --git a/source3/tdb/tdbutil.c b/source3/tdb/tdbutil.c index 5498872f8a..12db8b337f 100644 --- a/source3/tdb/tdbutil.c +++ b/source3/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; -- cgit