diff options
author | Jeremy Allison <jra@samba.org> | 2004-12-07 18:25:53 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:53:32 -0500 |
commit | 620f2e608f70ba92f032720c031283d295c5c06a (patch) | |
tree | ec3dd5fcf29eaa98a26ddeae3acb7a89fd0e0fb8 /source/tdb | |
parent | 12440744ba36445186042c8c254785766cce5385 (diff) | |
download | samba-620f2e608f70ba92f032720c031283d295c5c06a.tar.gz samba-620f2e608f70ba92f032720c031283d295c5c06a.tar.xz samba-620f2e608f70ba92f032720c031283d295c5c06a.zip |
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.
Diffstat (limited to 'source/tdb')
-rw-r--r-- | source/tdb/tdb.c | 24 | ||||
-rw-r--r-- | source/tdb/tdbback.c | 13 | ||||
-rw-r--r-- | source/tdb/tdbutil.c | 6 |
3 files changed, 40 insertions, 3 deletions
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; |