From 620f2e608f70ba92f032720c031283d295c5c06a Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 7 Dec 2004 18:25:53 +0000 Subject: r4088: Get medieval on our ass about malloc.... :-). Take control of all our allocation functions so we can funnel through some well known functions. Should help greatly with malloc checking. HEAD patch to follow. Jeremy. --- source/tdb/tdb.c | 24 ++++++++++++++++++++++++ source/tdb/tdbback.c | 13 +++++++++++++ source/tdb/tdbutil.c | 6 +++--- 3 files changed, 40 insertions(+), 3 deletions(-) (limited to 'source/tdb') diff --git a/source/tdb/tdb.c b/source/tdb/tdb.c index ceecbcb05dd..45895d2ec71 100644 --- a/source/tdb/tdb.c +++ b/source/tdb/tdb.c @@ -65,6 +65,30 @@ #include "spinlock.h" #else #include "includes.h" + +#if defined(PARANOID_MALLOC_CHECKER) +#ifdef malloc +#undef malloc +#endif + +#ifdef realloc +#undef realloc +#endif + +#ifdef calloc +#undef calloc +#endif + +#ifdef strdup +#undef strdup +#endif + +#ifdef strndup +#undef strndup +#endif + +#endif + #endif #define TDB_MAGIC_FOOD "TDB file\n" diff --git a/source/tdb/tdbback.c b/source/tdb/tdbback.c index 68b6fadc882..3f5bf3891b3 100644 --- a/source/tdb/tdbback.c +++ b/source/tdb/tdbback.c @@ -40,6 +40,19 @@ #else #include "includes.h" + +#ifdef malloc +#undef malloc +#endif + +#ifdef realloc +#undef realloc +#endif + +#ifdef calloc +#undef calloc +#endif + #endif #include "tdb.h" diff --git a/source/tdb/tdbutil.c b/source/tdb/tdbutil.c index e57eccfe598..45ebdae3af0 100644 --- a/source/tdb/tdbutil.c +++ b/source/tdb/tdbutil.c @@ -554,7 +554,7 @@ int tdb_unpack(char *buf, int bufsize, const char *fmt, ...) len += *i; if (bufsize < len) goto no_space; - *b = (char *)malloc(*i); + *b = (char *)SMB_MALLOC(*i); if (! *b) goto no_space; memcpy(*b, buf+4, *i); @@ -778,7 +778,7 @@ TDB_LIST_NODE *tdb_search_keys(TDB_CONTEXT *tdb, const char* pattern) for (key = tdb_firstkey(tdb); key.dptr; key = next) { /* duplicate key string to ensure null-termination */ - char *key_str = (char*) strndup(key.dptr, key.dsize); + char *key_str = (char*) SMB_STRNDUP(key.dptr, key.dsize); if (!key_str) { DEBUG(0, ("tdb_search_keys: strndup() failed!\n")); smb_panic("strndup failed!\n"); @@ -790,7 +790,7 @@ TDB_LIST_NODE *tdb_search_keys(TDB_CONTEXT *tdb, const char* pattern) /* do the pattern checking */ if (fnmatch(pattern, key_str, 0) == 0) { - rec = (TDB_LIST_NODE*) malloc(sizeof(*rec)); + rec = SMB_MALLOC_P(TDB_LIST_NODE); ZERO_STRUCTP(rec); rec->node_key = key; -- cgit